Go 如何使用reflect.TypeOf([]字符串{a";}).Elem()?

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

我对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 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

对于简单的类型比较,比如您正在展示的内容,您不需要反射。您可以改为使用:


对于简单的类型比较,比如您正在展示的内容,您不需要反射。您可以改为使用:


反思不是围棋的“基础”。你想要达到的最终目标是什么?通常,反射应该也可以避免。反射不是围棋的“基础”。你想要达到的最终目标是什么?通常,反思应该也可以避免。实际上,我最终使用了你的解决方案来避免使用反思,因为在同一个问题中,其他人说要尽可能避免反思。我实际上最终使用了你的解决方案来避免使用反思,因为在同一个问题中,其他人说要尽可能避免反思。