
如何在 go 中使用多类型任意参数指针
在 go 中,想要在方法中操作对象并同步修改原始对象,可以利用指针类型作为参数。以下是详细说明:
在示例代码中,objecta 结构体包含一个类型为 interface{} 的 config 属性。为了同时修改传入的参数和原始对象的配置,需要在 test 方法中使用指针类型。
修改后的 test 方法如下:
func (o *ObjectA) test(param1 interface{}) {
// 将 Config 属性值设置为传入参数
o.Config = param1
switch param1.(type) {
case string:
*param1.(*string) = "world"
fmt.Println("string")
case *string:
*param1.(*string) = "world"
fmt.Println("*string")
case *ObjectB:
param1.(*ObjectB).Name = "name1"
fmt.Println("*objectB")
case ObjectB:
fmt.Println("ObjectB")
}
}在 main 函数中,创建 objecta 对象 a 后,分别使用地址引用和值传递的方式将 objectb 和 s 变量传入 test 方法。这样,修改传入的参数时,原始对象也会同步修改。
最后,打印 object 和 s 的值,可以看到原始对象的配置和传入参数的值都发生了修改。










