2

次のコードブロックがあります。

package main

import (
    "fmt"
    "container/list"
)

type Foo struct {
    foo list  //want a reference to the list implementation   
             //supplied by the language
}


func main() {
   //empty  

}

コンパイルすると、次のメッセージが表示されます。

セレクターにないパッケージリストの使用

私の質問は、list内でどのように参照するのstructですか? それとも、構造をラップするための Go の適切なイディオムではありませんか。(構成)

4

1 に答える 1

4

私は2つの問題を見ることができます:

  1. fmtパッケージを使用せずにインポートします。Go で未使用のインポートはコンパイル時のエラーになります。
  2. fooは正しく宣言されていません:listタイプではなくパッケージ名です。container/listパッケージのタイプを使用したい。

修正されたコード:

package main

import (
    "container/list"
)

type Foo struct {
    // list.List represents a doubly linked list.
    // The zero value for list.List is an empty list ready to use.
    foo list.List
}

func main() {}

Go Playgroundで上記のコードを実行できます。パッケージの公式ドキュメント
も読むことを検討してください。container/list

何をしようとしているのかによっては、Go では構造体またはインターフェース内に型を埋め込むことができることも知りたいと思うかもしれません。詳細については、Effective Goガイドを参照して、これが特定のケースに適しているかどうかを判断してください。

于 2013-07-06T18:01:43.947 に答える