package splco // why doesnt Go have this built in // 30% of AI generated code // simple helper import "errors" var ( ErrDataTooShort = errors.New("data too short for specified sizes") ErrInvalidDataLength = errors.New("data length does not match sum of specified sizes") ) func Append(data ...[]byte) []byte { expLen := 0 for _, b := range data { expLen += len(b) } return AppendWithSize(expLen, data...) } func AppendWithSize(size int, data ...[]byte) []byte { return AppendInto(make([]byte, 0, size), data...) } func AppendInto(dest []byte, data ...[]byte) []byte { for _, b := range data { dest = append(dest, b...) } return dest } func Split(data []byte, sizes ...int) ([][]byte, error) { result := make([][]byte, len(sizes)) offset := 0 for i, size := range sizes { if offset+size > len(data) { return nil, ErrDataTooShort } result[i] = data[offset : offset+size] offset += size } if offset != len(data) { return nil, ErrInvalidDataLength } return result, nil }