我有以下代码块:
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中用于包装结构的正确习惯用法。 (组合物)
答案 0 :(得分:4)
我可以看到两个问题:
fmt
包而不使用它。在Go中,未使用的导入会导致编译时错误; 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
包的the official documentation。
根据您要执行的操作,您可能还想知道Go允许您在结构或接口中嵌入类型。请阅读Effective Go指南中的更多内容,然后决定是否对您的具体案例有意义。