【问题标题】:Create method to a slice type创建切片类型的方法
【发布时间】:2018-09-10 15:04:27
【问题描述】:

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

【问题讨论】:

    标签: go


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-13
      • 2012-11-25
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      相关资源
      最近更新 更多