如何使用带有两个[] byte切片或数组的Go append?

我最近尝试在Go中附加两个字节数组切片,并遇到了一些奇怪的错误。我的代码是:


one:=make([]byte, 2)

two:=make([]byte, 2)

one[0]=0x00

one[1]=0x01

two[0]=0x02

two[1]=0x03


log.Printf("%X", append(one[:], two[:]))


three:=[]byte{0, 1}

four:=[]byte{2, 3}


five:=append(three, four)

错误是:


cannot use four (type []uint8) as type uint8 in append

cannot use two[:] (type []uint8) as type uint8 in append

考虑到Go切片的鲁棒性应该不是问题:


http://code.google.com/p/go-wiki/wiki/SliceTricks


我在做什么错,我应该如何追加两个字节数组?


皈依舞
浏览 423回答 2
2回答

婷婷同学_

append()接受一个类型的切片[]T,然后接受该切片成员类型的可变数目的值T。换句话说,如果将a[]uint8作为切片传递给append()它,则它希望每个后续参数都是a uint8。解决方案是使用slice...语法来传递切片来代替varargs参数。您的代码应如下所示log.Printf("%X", append(one[:], two[:]...))和five:=append(three, four...)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go