如何在方法内部修改类型 slice ?我试过 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
}
但它不起作用。
最佳答案
您需要使用您在第二个示例中尝试过的指针接收器,但是您随后覆盖了指针值,这违背了目的。
你可以使用
func (test *Test) Add(str string) {
v := append(*test, str)
*test = v
}
或者更明确地说:
func (test *Test) Add(str string) {
*test = append(*test, str)
}
关于go - 如何在方法中修改类型 slice ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32875605/