创建切片类型的方法

问题描述 投票:0回答:1

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

go
1个回答
4
投票

你得到的指针是SliceStr*SliceStr),而不是SliceStr,因此不是切片类型。只需取消引用指针即可

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

它工作得很好。 *ss = ...设置ss指向的值,并且*ss调用中的appendss指向的值传递给它,而不是指针。

© www.soinside.com 2019 - 2024. All rights reserved.