我现在正在学习Go,并希望在不使用反射的情况下使用可变参数初始化类型。有可能吗?
这是一个例子:
type MyType struct {
field1 string
field2 string
...
fieldN string
}
func CreateMyType(arguments ...string) *MyType {
inst := MyType{arguments...} // does not work, is there any other way???
return &inst
}
注意这让我非常难过,这个问题被贬低了,我在那里问合法的东西并试图从中学习:(
答案 0 :(得分:2)
只需一点代码就可以了:
func CreateMyType(arguments ...string) *MyType {
var m MyType
switch len(arguments) {
case 3:
m.field3 = arguments[2]
fallthrough
case 2:
m.field2 = arguments[1]
fallthrough
case 1:
m.field1 = arguments[0]
}
return &m
}