英文:
GO Multiple Pointers
问题
我正在尝试创建一个函数,该函数接收多种类型的结构体,并将这些指针值添加到另一个函数中。
示例:
type Model1 struct {
Name string
}
type Model2 struct {
Type bool
}
func MyFunc(value ...interface{}) {
OtherFunc(value...)
}
func main() {
MyFunc(new(Model1), new(Model2))
}
问题是OtherFunc
只允许&value, &value
等作为参数。有没有办法像OtherFunc(&value...)
这样传递这些值?
英文:
I'm trying to create a function that receives multiple types of struct and add those pointer values to another function.
> Example:
<!-- language: lang-go -->
type Model1 struct {
Name string
}
type Model2 struct {
Type bool
}
func MyFunc(value ...interface{}) {
OtherFunc(value...)
}
func main() {
MyFunc( new(Model), new(Mode2) );
}
The problem is that OtherFunc
only allow &value, &value, etc
as parameter. Have some way to pass those values like OtherFunc(&value...)
?
答案1
得分: 3
我不确定这个方法能完全解决你的问题,但是你所要求的确实是语言的一个特性。你只需要使用复合字面量语法来实例化,而不是使用new关键字。所以你可以这样传递指针:MyFunc(&Model{}, &Mode2{})
。
问题是,在MyFunc
内部你仍然需要处理一个interface{}
类型,所以我不确定是否能直接调用OtherFunc
而不需要进行一些拆箱操作(如果你想要技术上的说法,可能需要进行类型断言)。
英文:
I'm not sure this will solve your problem entirely however, the exact thing you requested is a feature in the language. You just have to use composite-literal syntax for instantiation instead of new. So you could do this to pass pointers; MyFunc( &Model{}, &Mode2{} )
Thing is, you're still going to be dealing with an interface{}
within MyFunc
so I'm not sure that will just be able to call OtherFunc
without some unboxing (would probably be a type assertion if you want to get technical).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论