如何使用反射获得自定义类型?

定义了以下数据类型:


type Status int

type RealStatus Status

有没有办法通过反射从一个RealStatus类型到另一个类型?Status


慕桂英4014372
浏览 115回答 2
2回答

慕桂英546537

是的,如果您打算使用反射从一个值中获取一个Status 值,这是可能的;您可以为此使用,例如:RealStatus Value.Convert()type Status inttype RealStatus Statusrs := RealStatus(1)st := reflect.TypeOf(Status(0))var i interface{}i = reflect.ValueOf(rs).Convert(st).Interface()fmt.Printf("%T %v", i, i)这将输出(在Go Playground上尝试):main.Status 1请注意,您只能interface{}从反射中获取值,因此要将其用作Status值,您仍然需要类型断言。鉴于此,您可以首先使用简单的类型转换,如本例所示:rs := RealStatus(1)var s Statuss = Status(rs)fmt.Printf("%T %v", s, s)输出相同(在Go Playground上尝试),它s具有静态类型的优势Status。

梦里花落0921

不,不可能从另一种类型中获得一种类型。RealStatus和类型之间的唯一关系Status是它们共享相同的底层类型int。可以在这些类型的值之间进行转换,如@icza 的答案所示。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go