当前位置: 首页 > 面试题库 >

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

袁玮
2023-03-14
问题内容

我最近尝试在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

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


问题答案:

Go编程语言规范

附加并复制切片

可变参数函数append将零个或多个值附加xstype
S(必须是切片类型),并返回结果切片(也是type)S。值x将传递到类型为的参数,...T
其中T是的元素类型,S并且适用各自的参数传递规则。

append(s S, x ...T) S // T is the element type of S

...参数传递给参数

如果最终参数可分配给切片类型[]T...T则在参数后跟时可以将其作为参数的值原样传递...

您需要使用[]T...最后一个参数。

在您的示例中,使用最终参数slice type []byte,参数后跟...

package main

import "fmt"

func main() {
    one := make([]byte, 2)
    two := make([]byte, 2)
    one[0] = 0x00
    one[1] = 0x01
    two[0] = 0x02
    two[1] = 0x03
    fmt.Println(append(one[:], two[:]...))

    three := []byte{0, 1}
    four := []byte{2, 3}
    five := append(three, four...)
    fmt.Println(five)
}

游乐场:https :
//play.golang.org/p/2jjXDc8_SWT

输出:

[0 1 2 3]
[0 1 2 3]


 类似资料:
  • 下面是logcat: 12-15 13:15:30.763 295 33-29533/com.example.hieul.hismartversearch e/androidruntime:致命异常:main process:com.example.hieul.hismartversearch,pid:29533 java.lang.nullpointerexception:试图在Android.

  • 我有这个数组 因为我只想渲染前5张照片。。如何从阵列中获取前5张照片??

  • 问题内容: 遵循David Morrissey关于“如何在python中克隆列表? ”的回答。‘我正在运行一些性能测试,并在使用numpy数组时遇到意外行为。我知道可以/应该克隆一个numpy数组w / 要么 但是错误地认为切片也可以解决问题。然而: 是否存在这种轻微不一致的充分原因,还是应该提交错误? 问题答案: 在numpy中,切片是原始数组上的引用或“视图”,因此它们不是副本。那是设计使然,

  • 此时,我使用的开关盒如下: 我想做的是有一个这样的数组或字符串: 这可能吗? 如果是怎样?

  • 我有一个简单的网页,两个div并排。一个包含文本,另一个包含整个右分区的图像。 完整的代码在这里https://jsfiddle.net/Cilvako/fz97emmz/当我调整浏览器大小时,图像div会调整大小,但文本div不会发生任何变化。我怎样才能让两者都有反应?我应该将两者都包装在容器div中吗?谢谢你!

  • 问题内容: 我想检查两个结构,切片和映射是否相等。 但是我遇到了以下代码的问题。在相关行中查看我的评论。 http://play.golang.org/p/AZIzW2WunI 问题答案: 您可以使用reflect.DeepEqual,也可以实现自己的函数(在性能上比使用反射更好): http://play.golang.org/p/CPdfsYGNy_