gpt4 book ai didi

Golang 类型断言失败

转载 作者:数据小太阳 更新时间:2023-10-29 03:21:29 27 4
gpt4 key购买 nike

在 Go 语言中,我正在尝试将接口(interface)转换为 byte slice 。调试器清楚地显示它是一个 byte slice 。

    // Check an Interface's Type.
ifcType = reflect.TypeOf(ifc).Kind()

// Array?
if ifcType == reflect.Slice {

// Get Type of Sub-Elements.
ifcElementType = reflect.TypeOf(ifc).Elem().Kind()
if ifcElementType == reflect.Uint8 {

// Array of Bytes.
// => 'bencode' Byte String.

// Convert the Type.
ba, ok = ifc.([]byte)
if !ok {
return nil, ErrTypeAssertion
}

当我检查接口(interface)的类型是 Slice 并且子项的类型是 Uint8 时,我执行类型断言。但由于某种原因,它失败了。怎么可能?

在“ok”变量变为“false”之后 GoLand 的调试器屏幕截图: http://imagehost.cc/image/v4403

谢谢!

最佳答案

我找到了原因。

那个 byte slice 实际上是“ByteString”类型,它确实是一个 byte slice 。为什么编译器不理解这些是我无法理解的相等类型。

我不得不将字段的类型从类型别名更改为简单的“[]byte”,现在它可以工作了。

关于Golang 类型断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53035590/

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