go - 检查 Go 中的结构类型

标签 go reflection

我正在尝试检查 Go 中的结构类型。这是我能想到的最好方法。有没有更好的方法,最好不要初始化结构?

package main

import (
    "fmt"
    "reflect"
)

type Test struct{
    foo int
}

func main() {
    t := Test{5}
    fmt.Println(reflect.TypeOf(t) == reflect.TypeOf(Test{}))
}

最佳答案

类型断言:

package main

import "fmt"

type Test struct {
    foo int
}

func isTest(t interface{}) bool {
    switch t.(type) {
    case Test:
        return true
    default:
        return false
    }
}

func main() {
    t := Test{5}
    fmt.Println(isTest(t))
}

Playground


并且,更简化:

_, isTest := v.(Test)

Playground


可以引用language specification以获得技术解释。

关于go - 检查 Go 中的结构类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45067382/

相关文章:

go - 如何在go中将一个 slice 的内容复制到另一个 slice

go - 在 golang 中结合时间和日期?

go - 如何绕过 dgrijalva/jwt-go 中的 cve-2020-26160 漏洞?

c# - Dnlib - 从加载的程序集中执行 IL MethodBody

java - Java 8 上的 getGenericReturnType 输出不正确

go - 尝试从永远不会在goroutine中接收数据但在主func中接收数据的 channel 读取时,为什么没有死锁

基于变量的 Golang 格式文本模板

java - 如何从子调用父私有(private)方法?

使用 GUI 的 Java 文件输入获取方法

c++ - 如何在 C++ 中执行类型扫描?