golang 多类型 任意参数指针 怎么使用?

  • 如何在main方法中操作objcetA的test方法时,对传递进来的参数修改同时对原对象也进行修改,类似传地址的概念
package main
import "fmt"
type ObjectA struct {
   Config interface{}
}
func (ObjectA) test(param1 interface{})  {
   switch param1.(type) {
   case string:
      param1 = "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")
   }
}
type ObjectB struct {
   Name string
}
func main()  {
   a := ObjectA{}
   s := "string"
 a.test(&s)
   object := ObjectB{};
   a.test(&object)
   fmt.Println(object)
   fmt.Println(s)
}

起因是想构建一个对象A,对象A提供一个配置属性,该属性允许传递string和另外一个对象B,传递过来的值修改同时能够影响外面的值,请教下这种情况该如何设计?

阅读 1.6k
1 个回答

不是有接受者吗?你为啥不定义一个接受者参数?

func (o *ObjectA) test(param1 interface{})  {
    o.Config = param1
   switch param1.(type) {
   case string:
      param1 = "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")
   }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题