col.ToStrings undefined(类型列没有字段或方法ToStrings)

时间:2017-03-13 18:52:30

标签: 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(类型列没有字段或方法   ToStrings)

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

1 个答案:

答案 0 :(得分:0)

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