英文:
Reflect value of []byte
问题
如何检索此接口的[]byte值?
package main
import (
"reflect"
)
func byteInterface() interface{} {
return []byte("foo")
}
func main() {
//var b []byte
i := byteInterface()
switch {
case reflect.TypeOf(i).Kind() == reflect.Slice && (reflect.TypeOf(i) == reflect.TypeOf([]byte(nil))):
default:
panic("should have bytes")
}
}
你可以使用类型断言来检索接口的[]byte值。在这种情况下,你可以使用以下代码:
b := i.([]byte)
这将将接口值i
转换为[]byte
类型,并将其赋值给变量b
。请注意,在进行类型断言之前,你应该确保接口值的类型是[]byte
。
英文:
How do I retrieve the []byte value of this interface?
package main
import (
"reflect"
)
func byteInterface() interface{} {
return []byte("foo")
}
func main() {
//var b []byte
i := byteInterface()
switch {
case reflect.TypeOf(i).Kind() == reflect.Slice && (reflect.TypeOf(i) == reflect.TypeOf([]byte(nil))):
default:
panic("should have bytes")
}
}
答案1
得分: 8
你可以使用type assertion来实现这个功能,不需要使用reflect
包:
package main
func byteInterface() interface{} {
return []byte("foo")
}
func main() {
i := byteInterface()
if b, ok := i.([]byte); ok {
// 使用b作为[]byte类型
println(len(b))
} else {
panic("应该是字节类型")
}
}
英文:
You can use a type assertion for this; no need to use the reflect
package:
package main
func byteInterface() interface{} {
return []byte("foo")
}
func main() {
i := byteInterface()
if b, ok := i.([]byte); ok {
// use b as []byte
println(len(b))
} else {
panic("should have bytes")
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论