如何修改方法内的类型切片?我试过了 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
}
但它不起作用。
答案 0 :(得分:2)
你需要使用一个指针接收器,你已经在第二个例子中试过了,但是你会覆盖指针值,这会破坏目的。
您可以使用
func (test *Test) Add(str string) {
v := append(*test, str)
*test = v
}
或者更清楚:
func (test *Test) Add(str string) {
*test = append(*test, str)
}