Go 创建一个切片类型的方法

Go 创建一个切片类型的方法,go,Go,我是刚来戈朗的。我正在尝试向切片添加一个方法。该方法只是append的包装器,不起作用 package main import ( "fmt" ) type SliceStr []string func (ss *SliceStr) Add(s string) { ss = append(ss, s) } func main() { var s SliceStr s.Add("hello") fmt.Println(s) } prog.go:1

我是刚来戈朗的。我正在尝试向切片添加一个方法。该方法只是append的包装器,不起作用

package main

import (
    "fmt"
)

type SliceStr []string

func (ss *SliceStr) Add(s string) {
    ss = append(ss, s)
}

func main() {
    var s SliceStr

    s.Add("hello")
    fmt.Println(s)
}

prog.go:10:12:要追加的第一个参数必须是slice;have*SliceStr

您得到的指针指向
SliceStr
*SliceStr
),而不是
SliceStr
,因此不是切片类型。只要取消对指针的引用

func (ss *SliceStr) Add(s string) {
    *ss = append(*ss, s)
}

而且效果很好
*ss=…
设置
ss
所指向的值,调用中的
*ss
传递
ss
所指向的值,而不是指针。

您得到的是指向
SliceStr
*SliceStr
)的指针,而不是
SliceStr
,因此不是切片类型。只要取消对指针的引用

func (ss *SliceStr) Add(s string) {
    *ss = append(*ss, s)
}
而且效果很好
*ss=…
设置
ss
指向的值,调用中的
*ss
传递
ss
指向的值,而不是指针