切片字节数组以符合 Golang 中参数的结构?

Slicing a byte array to conform to a struct for param in Golang?

我有大致这样的东西

type Guid [16]byte

type Payload struct {
    ....
    SthGuid  [17]byte
}


func (h *...) Get(guid Guid) (... error) {

}

我想用 SthGuid 的最后 16 个字节调用 Get。例如,

Get(PayloadInstance.SthGuid[1:16]))

无法将 SthGuid[1:16]([]byte 类型的值)转换为 Guid

我正在尝试调用 SthGuid[1:] 来分割第一个字节并将最后 16 个字节用作输入参数。那样不行。

您可以复制正确类型的数组,例如:

var guid [16]byte
copy(guid[:], SthGuid[1:16])
Get(guid)

或者,作为 Go 1.17,您可以尝试使用切片到数组的转换:

https://tip.golang.org/ref/spec#Conversions_from_slice_to_array_pointer