如何修改内部切片类型?我试过http://play.golang.org/p/ul2n8mk6ye
type Test []string
func (test Test) Add(str string) {
test = append(test, str)
}
func main() {
test := Test{}
test.Add("value")
fmt.Println(len(test))//0
}和http://play.golang.org/p/nV9IO7E5sp
type Test []string
func (test *Test) Add(str string) {
v := append(*test, str)
test = &v
}
func main() {
test := Test{}
test.Add("value")
fmt.Println(len(test))//0
}但不起作用。
发布于 2015-09-30 21:08:50
您需要使用指针接收器,这是您在第二个示例中尝试过的,但是您随后重写了这个指针值,该指针值与目的不符。
你可以用
func (test *Test) Add(str string) {
v := append(*test, str)
*test = v
}或者更清楚地说:
func (test *Test) Add(str string) {
*test = append(*test, str)
}https://stackoverflow.com/questions/32875605
复制相似问题