为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
皈依舞 2021-05-06 13:13:59
我最近尝试在Go中附加两个字节数组切片,并遇到了一些奇怪的错误。我的代码是:one:=make([]byte, 2)two:=make([]byte, 2)one[0]=0x00one[1]=0x01two[0]=0x02two[1]=0x03log.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 appendcannot use two[:] (type []uint8) as type uint8 in append考虑到Go切片的鲁棒性应该不是问题:http://code.google.com/p/go-wiki/wiki/SliceTricks我在做什么错,我应该如何追加两个字节数组?
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

append()接受一个类型的切片[]T,然后接受该切片成员类型的可变数目的值T。换句话说,如果将a[]uint8作为切片传递给append()它,则它希望每个后续参数都是a uint8

解决方案是使用slice...语法来传递切片来代替varargs参数。您的代码应如下所示

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

five:=append(three, four...)


查看完整回答
反对 回复 2021-05-10
  • 2 回答
  • 0 关注
  • 422 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信