go - col.ToStrings 未定义(类型 Columns 没有字段或方法 ToStrings)

标签 go methods types export slice

我正在尝试创建一个表示指向另一个类型的指针片段的类型并为其定义一个方法,我的代码看起来与此类似,尽管对于示例来说有点简化:

package column

type Column struct {

    name string
}

type Columns []*Column

func (c Column) ToString() string {

    return c.name
}

func (c Columns) ToStrings() []string {

    var strSlice []string

    for _, v := range c {

        strSlice = append(strSlice, v.ToString())
    }

    return strSlice
}

然后在单独的文件中调用它,如下所示:

import (
    c "main/column"
    "strings"
)

type Columns c.Columns

func ToString(col Columns) string {

    return strings.Join(col.ToStrings(), ",\n")
}

但是,当我尝试在导出的“Columns”类型上调用方法 ToStrings() 时,出现此错误:

columns.ToStrings undefined (type Columns has no field or method ToStrings)

编译器似乎找不到方法ToStrings()。有没有解决的办法?为什么编译器找不到为“Columns”类型定义的导出方法?

最佳答案

type Columns c.Columns 使用新的方法集创建一个全新的类型。这样做的唯一原因是专门删除现有类型的方法。

关于go - col.ToStrings 未定义(类型 Columns 没有字段或方法 ToStrings),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42771289/

相关文章:

java - 从另一个 JFrame Gui 访问变量

c# - 我如何查看 GenericTypeDefinition 是否实现了 IEnumerable<>

wpf - 如何创建包含具有公共(public)父类(super class)的对象的 F# 列表?

typescript - 从函数参数推断联合类型

javascript - 如何在 Javascript 中读取本地文件(从 Electron 应用程序运行)

go - 类型 func (int) 字符串的无效间接

go - 删除结构中 slice 的元素

gocode 自动完成不起作用

c# - ASP.NET锁线程方法

go - 如何在 Golang 中正确处理缓冲 channel ?