0
別の型へのポインタのスライスを表す型を作成しようとしていますが、そのためのメソッドを定義しています。例えば単純化:それは、このような別のファイルに呼び出されたcol.ToStrings未定義(型の列にはフィールドまたはメソッドのToStringはありません)
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
}
:私はエクスポートされた「列」タイプにメソッドToStrings()
を呼び出すしようとすると、
import (
c "main/column"
"strings"
)
type Columns c.Columns
func ToString(col Columns) string {
return strings.Join(col.ToStrings(), ",\n")
}
は、しかし、私はこのエラーを取得します:
columns.ToStrings undefined (type Columns has no field or method ToStrings)
コンパイラがメソッドToStrings()
を見つけることができないようです。これを回避する方法はありますか?なぜ "Columns"型に定義されたエクスポートされたメソッドがコンパイラで見つからないのですか?
メソッドを持たない新しい 'Columns'型を作成しました。元のメソッドを使いたい場合は、なぜ新しいタイプを作成しましたか? – JimB
私はちょうどそれがより読みやすいと思った..私は古いタイプから新しいタイプを作るときにあなたが言っていることから集めます。 –
ありがとうございました。回答を受け入れると病気になります。 –