我想要在一个切片上添加一些辅助方法。所以我创建了一个类型为 []*MyType 的变量。 有没有办法在 MyTypes 切片中添加元素?append 方法无法识别该切片。
package main
import "fmt"
type MyType struct{
Name string
Something string
}
type MyTypes []*MyType
func NewMyTypes(myTypes ...*MyType)*MyTypes{
var s MyTypes = myTypes
return &s
}
//example of a method I want to be able to add to a slice
func(m MyTypes) Key() string{
var result string
for _,i := range m{
result += i.Name + ":"
}
return result
}
func main() {
mytype1 ,mytype2 := MyType{Name:"Joe", Something: "Foo"}, MyType{Name:"PeggySue", Something: "Bar"}
myTypes:= NewMyTypes(&mytype1,&mytype2)
//cant use it as a slice sadface
//myTypes = append(myTypes,&MyType{Name:"Random", Something: "asdhf"})
fmt.Println(myTypes.Key())
}
我不想把它包装成另一种类型并命名参数,尽管我有点这样做...因为JSON编组可能会有所不同。
如何向MyTypes切片添加内容?
我真的希望能够仅添加一个方法到切片中以使其实现特定接口而不影响编组..是否有更好的不同方法?
谢谢
*myTypes = append(*myTypes, /*whatever*/)
。最好不要使用指向切片的指针,除非您知道自己在做什么:https://play.golang.org/p/FxsUo1vu6L - Dave C