package main
import "fmt"
func main() {
a2 := "12435"
//想用过这个函数过去 给他重复赋值
a(&a2)
//
// 这 a2 的值 为5 应该怎么做呢
fmt.Println(a2)
}
func a(ap interface{}) {
ap = 5
}
有疑问加站长微信联系(非本文作者)

package main
import "fmt"
func main() {
a2 := "12435"
//想用过这个函数过去 给他重复赋值
a(&a2)
//
// 这 a2 的值 为5 应该怎么做呢
fmt.Println(a2)
}
func a(ap interface{}) {
ap = 5
}
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
忘解惑
看了哈源码 道行太浅
看了你的代码,我没看懂你是什么意图。
就是封装mongodb 查询函数 第一个参数为
第二个参数
interface
这个用来接受查询数据的返回值遇到的问题是 第二个内存地址换了导致 不会有数据返回 但是使用 json.Unmarshal 能达到要求 所有完整代码如下
这是调用代码 感觉很不完善
两个办法
第一个办法是类型强制转换,从,转为*string
第二个办法是反射
func a(ap interface{}) { val := reflect.ValueOf(ap) if val.Kind() != reflect.Ptr { panic("some: check must be a pointer") } val.Elem().Set(reflect.ValueOf("5")) }
不同类型的话,只能用反射
最好的办法,就是断言
你这个函数的接收参数是一个空接口,空接口可以接受很多类型的参数,那怎么知道你ap的类型?这个就得需要反射里面的类型断言,最后才能去设置这个变量的值。