创建切片类型的方法

时间:2018-09-09 19:04:23

标签: go

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

1 个答案:

答案 0 :(得分:4)

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

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

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