登录
首页 >  Golang >  Go问答

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

来源:Golang技术栈

时间:2023-04-05 07:58:40 198浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《Golang:将接口动态转换为类型化变量》,这篇文章主要会讲到golang等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

在 go 中,是否可以以某种方式动态转换变量?

例如,如果一个简单的演员表是:

var intAge  = interfaceAge.(int)

如果我事先不知道年龄是一个整数怎么办?一个简单的写法是

var x = getType()
var someTypeAge = interfaceAge(.x)

有没有办法实现这样的目标?reflect 包提供了一些在运行时确定或强制转换类型的方法 - 但我找不到像上面提到的任何东西(适用于所有类型的通用方案)。

正确答案

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

如果你想动态确定typeinterface{}可以使用类型切换

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
}

文中关于golang的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Golang:将接口动态转换为类型化变量》文章吧,也可关注golang学习网公众号了解相关技术文章。

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