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

使用接口的 GO 类型强制转换和分配

使用接口的 GO 类型强制转换和分配

Go
噜噜哒 2022-10-04 19:25:01
我无法理解使用接口进行类型转换。有一个使用指针设置值的示例: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个赞

第二个程序赋值给局部变量,而不是调用方的变量。aa

必须取消引用要分配给调用方值的指针。为此,您需要一个指针类型。使用类型断言获取指针类型:

func cast(a interface{}, b interface{}) {
    *a.(*string) = b.(string)
}


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

添加回答

举报

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