自定义结构中的Golang引用列表

时间:2013-07-06 17:39:48

标签: struct go composition

我有以下代码块:

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中用于包装结构的正确习惯用法。 (组合物)

1 个答案:

答案 0 :(得分:4)

我可以看到两个问题:

  1. 导入fmt包而不使用它。在Go中,未使用的导入会导致编译时错误;
  2. foo未正确声明:list是包名而非类型;您想使用container/list包中的类型。
  3. 更正后的代码:

    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包的the official documentation

    根据您要执行的操作,您可能还想知道Go允许您在结构或接口中嵌入类型。请阅读Effective Go指南中的更多内容,然后决定是否对您的具体案例有意义。