我无法理解使用接口进行类型转换。有一个使用指针设置值的示例:func main() { a := &A{} cast(a, "BBB") fmt.Println(a.s)}type A struct { s string}func cast(a *A, b interface{}) { a.s = b.(string)}该程序的输出将打印 。BBB现在我的问题是,如果我想设置比字符串更多怎么办?我想我想做这样的事情:func main() { a := &A{} cast(&(a.s), "BBB") fmt.Println(a.s)}type A struct { s string}func cast(a interface{}, b interface{}) { // Here could be type switch to determine what kind of type I want to cast to, but for know string is enough... a = b.(string)}此代码的输出是一个空字符串...任何人都可以帮助我理解我做错了什么吗?
1 回答
开心每一天1111
TA贡献1836条经验 获得超13个赞
第二个程序赋值给局部变量,而不是调用方的变量。a
a
必须取消引用要分配给调用方值的指针。为此,您需要一个指针类型。使用类型断言获取指针类型:
func cast(a interface{}, b interface{}) { *a.(*string) = b.(string) }
- 1 回答
- 0 关注
- 95 浏览
添加回答
举报
0/150
提交
取消