猿问

如何在方法内修改类型切片?

如何在方法内修改类型切片?我试过 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

}

但它不起作用。


幕布斯6054654
浏览 171回答 1
1回答

蝴蝶刀刀

您需要使用指针接收器,您已在第二个示例中尝试过该接收器,但是您随后覆盖了无法达到目的的指针值。你可以用func (test *Test) Add(str string) {    v := append(*test, str)    *test = v}或者更清楚:func (test *Test) Add(str string) {    *test = append(*test, str)}
随时随地看视频慕课网APP

相关分类

Go
我要回答