为了账号安全,请及时绑定邮箱和手机立即绑定

Golang:动态地将接口​​转换为类型化变量

Golang:动态地将接口​​转换为类型化变量

Go
米琪卡哇伊 2021-09-10 21:18:07
在 go 中,是否可以以某种方式动态转换变量?例如,如果一个简单的演员表是:var intAge  = interfaceAge.(int)如果我事先不知道 age 是 int 怎么办?一种简单的写法是var x = getType()var someTypeAge = interfaceAge(.x)有没有办法实现这样的目标?反射包提供了一些在运行时确定或转换类型的方法 - 但我找不到像上面提到的任何东西(适用于所有类型的通用方案)。
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

不,你不能。Go 是一种静态类型语言。变量的类型是在编译时确定的。


如果你想动态确定type一个interface{}你可以使用类型切换:


var t interface{}

t = functionOfSomeType()

switch t := t.(type) {

default:

    fmt.Printf("unexpected type %T", t)       // %T prints whatever type t has

case bool:

    fmt.Printf("boolean %t\n", t)             // t has type bool

case int:

    fmt.Printf("integer %d\n", t)             // t has type int

case *bool:

    fmt.Printf("pointer to boolean %t\n", *t) // t has type *bool

case *int:

    fmt.Printf("pointer to integer %d\n", *t) // t has type *int

}


查看完整回答
反对 回复 2021-09-10
  • 1 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信