我是golang的新手。我正在尝试向切片添加方法。该方法只是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:追加的第一个参数必须是切片;有* SliceStr
你得到的指针是SliceStr
(*SliceStr
),而不是SliceStr
,因此不是切片类型。只需取消引用指针即可
func (ss *SliceStr) Add(s string) {
*ss = append(*ss, s)
}
它工作得很好。 *ss = ...
设置ss
指向的值,并且*ss
调用中的append
将ss
指向的值传递给它,而不是指针。