gpt4 book ai didi

go - 接受 *[128]uint8、*[256]uint8 等的函数

转载 作者:行者123 更新时间:2023-12-01 22:38:03 24 4
gpt4 key购买 nike

在我的代码中,我有:

fmt.Printf("event.Comm type: %T\n", event.Comm)
fmt.Printf("&event.Comm type: %T\n", &event.Comm)
哪个打印:
event.Comm type: [128]uint8
&event.Comm type: *[128]uint8
event.Comm type: [256]uint8
&event.Comm type: *[256]uint8
等等。
我想定义一个函数,我可以在其中传递他们的指针,并完成一些工作。
所以我定义:
func aux(x *[]byte){
fmt.Println("Aux got", x)
}
希望我会发送 aux(&event.Comm)aux(&trigger.Comm)等。
除了它拒绝 build : cannot use &event.Comm (type *[128]byte) as type *[]byte in argument to aux*[n]uint8 定义函数签名的惯用方式是什么?作为它的论据?

最佳答案

惯用的方法是使用 slice :

func aux(x []byte){
fmt.Println("Aux got", x)
}
使用 slice expression [:]创建由数组支持的 slice :
 aux(event.Comm[:])
请注意 arraysslices是不同的类型,不能相互分配。数组具有固定大小。 slice 描述了数组的一部分。 slice 头包含指向后备数组的指针、 slice 的长度和后备数组的容量。

关于go - 接受 *[128]uint8、*[256]uint8 等的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62524951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com