登录
首页 >  Golang >  Go问答

使用reflect.Typeof()进行golang类型断言

来源:stackoverflow

时间:2024-03-01 08:15:26 137浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《使用reflect.Typeof()进行golang类型断言》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我试图用字符串值(名称)来识别结构。 reflect.typeof 返回 type

但是类型断言需要 type

如何将 type 转换为 type

或者有什么处理建议吗?

http://play.golang.org/p/3pjg3yxiyf

package main

import (
"fmt"
"reflect"
)
type Article struct {
    Id             int64       `json:"id"`
    Title          string      `json:"title",sql:"size:255"`
    Content        string      `json:"content"`
}


func IdentifyItemType(name string) interface{} {
    var item interface{}
    switch name {
    default:
        item = Article{}
    }
    return item
}

func main() {

    i := IdentifyItemType("name")
    item := i.(Article)
    fmt.Printf("Hello, item : %v\n", item)
    item2 := i.(reflect.TypeOf(i))  // reflect.TypeOf(i) is not a type
    fmt.Printf("Hello, item2 : %v\n", item2)

}

解决方案


如果您需要打开外部接口的类型,则不需要反射。

switch x.(type){
  case int: 
    dosomething()
}

...但是如果您需要在界面中切换属性的类型,那么您可以这样做:

s := reflect.ValueOf(x)
for i:=0; i

我还没有找到更干净的方法,我很想知道它是否存在。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《使用reflect.Typeof()进行golang类型断言》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>