Go 如何使用reflect.TypeOf([]字符串{a";}).Elem()?
我对golang真的很陌生,我正在努力学习基础知识。我写了一段代码如下:Go 如何使用reflect.TypeOf([]字符串{a";}).Elem()?,go,Go,我对golang真的很陌生,我正在努力学习基础知识。我写了一段代码如下: package main import ( "log" "reflect" ) if reflect.TypeOf([]string{"a"}).Elem() == reflect.String { log.Println("success") } if reflect.TypeOf([]int{1}).Elem() == reflect.Int{ log.Println("success") } if
package main
import (
"log"
"reflect"
)
if reflect.TypeOf([]string{"a"}).Elem() == reflect.String {
log.Println("success")
}
if reflect.TypeOf([]int{1}).Elem() == reflect.Int{
log.Println("success")
}
if reflect.TypeOf([]float64{1.00}).Elem() == reflect.Float64 {
log.Println("success")
}
当我运行这段代码时,我得到了错误
无效操作:reflect.TypeOf([]字符串文字).Elem()==
String(类型reflect.Type和reflect.Kind不匹配)
我不理解文档,因为我找不到如何引用不同“类型”或“种类”的示例
我应该如何编写if语句来进行我正在尝试的比较?
reflect.Type
是一个接口
,其方法名为Kind()
。根据文件:
// Kind returns the specific kind of this type.
Kind() Kind
所以你应该写:
if reflect.TypeOf([]string{"a"}).Elem().Kind() == reflect.String {
log.Println("success")
}
reflect.Type
是一个名为Kind()
的方法的接口。根据文件:
// Kind returns the specific kind of this type.
Kind() Kind
所以你应该写:
if reflect.TypeOf([]string{"a"}).Elem().Kind() == reflect.String {
log.Println("success")
}
要比较类型,请使用:
if reflect.TypeOf([]string{"a"}).Elem() == reflect.TypeOf("") {
log.Println("success")
}
要比较种类,请使用:
if reflect.TypeOf([]string{"a"}).Elem().Kind() == reflect.String {
log.Println("success")
}
如果要测试特定类型,请比较类型。如果您想确定它是什么类型的,那么比较种类
此示例可能有助于:
type x string
x
和string
类型都是字符串类型。对于以下两种情况,种类比较都返回true:
fmt.Println(reflect.TypeOf(x("")).Kind() == reflect.String) // prints true
fmt.Println(reflect.TypeOf("").Kind() == reflect.String) // prints true
x
和string
类型不同:
fmt.Println(reflect.TypeOf(x("")) == reflect.TypeOf("")) // prints false
要比较类型,请使用:
if reflect.TypeOf([]string{"a"}).Elem() == reflect.TypeOf("") {
log.Println("success")
}
要比较种类,请使用:
if reflect.TypeOf([]string{"a"}).Elem().Kind() == reflect.String {
log.Println("success")
}
如果要测试特定类型,请比较类型。如果您想确定它是什么类型的,那么比较种类
此示例可能有助于:
type x string
x
和string
类型都是字符串类型。对于以下两种情况,种类比较都返回true:
fmt.Println(reflect.TypeOf(x("")).Kind() == reflect.String) // prints true
fmt.Println(reflect.TypeOf("").Kind() == reflect.String) // prints true
x
和string
类型不同:
fmt.Println(reflect.TypeOf(x("")) == reflect.TypeOf("")) // prints false
对于简单的类型比较,比如您正在展示的内容,您不需要反射。您可以改为使用:
对于简单的类型比较,比如您正在展示的内容,您不需要反射。您可以改为使用:
反思不是围棋的“基础”。你想要达到的最终目标是什么?通常,反射应该也可以避免。反射不是围棋的“基础”。你想要达到的最终目标是什么?通常,反思应该也可以避免。实际上,我最终使用了你的解决方案来避免使用反思,因为在同一个问题中,其他人说要尽可能避免反思。我实际上最终使用了你的解决方案来避免使用反思,因为在同一个问题中,其他人说要尽可能避免反思。