我是golang的新手。我正在尝试向 slice 添加方法。该方法只是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;有* SliceStr
最佳答案
您将获得一个指向SliceStr
(*SliceStr
)的指针,而不是SliceStr
的指针,因此不是 slice 类型。只是取消引用指针
func (ss *SliceStr) Add(s string) {
*ss = append(*ss, s)
}
而且效果很好。
*ss = ...
设置ss
指向的值,并且对 *ss
的调用中的append
将值ss
指向的值传递给它,而不是指针。关于go - 创建 slice 类型的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52247757/