go - 如何使用 reflect.TypeOf([]string {"a"}).Elem()?

标签 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 reflect.TypeOf([]float64{1.00}).Elem() == reflect.Float64 {
  log.Println("success")
}

当我运行这段代码时,出现错误

invalid operation: reflect.TypeOf([]string literal).Elem() == reflect.String (mismatched types reflect.Type and reflect.Kind)

我不明白文档 https://golang.org/pkg/reflect/因为我找不到如何引用不同“类型”或“种类”的示例

我应该如何编写 if 语句来进行我正在尝试的比较?

最佳答案

reflect.Type 是一个接口(interface),带有一个名为Kind() 的方法。根据文档:

    // Kind returns the specific kind of this type.
    Kind() Kind

所以你应该写:

if reflect.TypeOf([]string{"a"}).Elem().Kind() == reflect.String {
  log.Println("success")
}

关于go - 如何使用 reflect.TypeOf([]string {"a"}).Elem()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51228878/

相关文章:

go - (启动容器: API error (500) Hyperledger时出错

go - 一个 channel 操作是否影响另一个 channel 操作

mysql - 连接到 kubernetes mysql 服务时 go-mysql 连接被拒绝

bufio 包中的 golang Writer.Write() 与 ioutil 包中的 WriteFile()

go - 为什么 AWS API Gateway websocket 发送错误

json - JSON 响应结构

go - 为什么 binary.Size() 返回 (-1)?

templates - 如何从已解析的模板中获取模板 'actions' 的 map 或列表?

go - 在 golang 中,我的 go 例程使用了所有内核,但每个内核只使用了 50% 到 75%

go - Go中对象的大小