go - 创建切片类型的方法
问题描述
我是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: append 的第一个参数必须是 slice;有 *SliceStr
解决方案
您得到一个指向SliceStr
( *SliceStr
) 的指针,SliceStr
而不是切片类型,因此也不是切片类型。只需取消引用指针
func (ss *SliceStr) Add(s string) {
*ss = append(*ss, s)
}
它工作得很好。*ss = ...
设置值ss
所指向的值,并且*ss
在调用中append
传递值ss
所指向的值,而不是指针。
推荐阅读
- windows - 使用 NdisSendPackets 时释放缓冲区的正确方法?(NDIS 5.0)
- javascript - 编辑数据时显示/隐藏表单
- javascript - react中如何将实时数据整合到d3图表中
- grails - 对日期字段使用 Datepicker
- c++ - 如何构建特定函数调用的图表?
- ruby - rbenv 未从自动部署正确初始化
- python - matplotlib.pyplot 输出作为交互式绘图可见,而不是在 spyder 控制台中显示
- python-3.x - ValueError:无法反序列化关键数据 - Jira 令牌
- swagger - Swashbuckle.AspNetCore.SwaggerGen - 添加带有固定枚举列表的标头参数 - .NET 5 rest api
- sql - CASE 语句 - 已达到表达服务限制