定义了以下数据类型:type Status inttype RealStatus Status有没有办法通过反射从一个RealStatus类型到另一个类型?Status
2 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
是的,如果您打算使用反射从一个值中获取一个Status 值,这是可能的;您可以为此使用,例如:RealStatus Value.Convert()
type Status int
type RealStatus Status
rs := 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 Status
s = Status(rs)
fmt.Printf("%T %v", s, s)
输出相同(在Go Playground上尝试),它s具有静态类型的优势Status。
梦里花落0921
TA贡献1772条经验 获得超6个赞
不,不可能从另一种类型中获得一种类型。RealStatus
和类型之间的唯一关系Status
是它们共享相同的底层类型int
。
可以在这些类型的值之间进行转换,如@icza 的答案所示。
- 2 回答
- 0 关注
- 114 浏览
添加回答
举报
0/150
提交
取消