我是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/

10-16 11:22