创建切片类型的方法



我是golang的新手。我正在尝试向切片添加方法。该方法只是附加的包装器,不起作用。

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;有 *SliceStr

您获得的指针指向SliceStr(*SliceStr(,而不是SliceStr,因此不是切片类型。只需取消引用指针

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

而且效果很好。*ss = ...设置ss指向的值,调用append中的*ssss指向的值而不是指针传递给它。

最新更新