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在 a中引用struct?或者这不是 Go 中用于包装结构的正确习惯用法。(作品)

4

1 回答 1

4

我可以看到两个问题:

  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 回答