Golang 中国
func Test_test(t *testing.T) {
    var a int
    foo(&a)
    fmt.Println(a)
}

func foo(i *interface{}) error {
    switch (*i).(type) {
    case int:
        *i = 123
    case float32:
        *i = 1.123
    }
    return nil
}

希望按照foo的参数i的类型,给i所指向的对象赋值。在调用foo是传参&a会报错:
cannot use &a (type *int) as type *interface{} in argument to foo

请问在go中如何实现?谢谢了。


jingkaisong 于 2018-03-08 21:21 修改
3 回复
a665698
#1 a665698 • 2018-03-09 11:18

func foo(i interface{}) {
if tmp, ok := i.(*int); ok {
*tmp = 123
}
}

wuliangyou
#2 wuliangyou • 2018-03-09 11:26

i.(*int)

bigbear
#3 bigbear • 2018-03-12 12:47

一楼正解, *interface{} 是指向接口类型的指针. 函数内部再做类型转换.

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。