【发布时间】:2015-07-30 16:10:11
【问题描述】:
我正在尝试创建一个堆栈来存储一系列霍夫曼树结构。目前我正在使用我在 github 上找到的实现。
package util
type item struct {
value interface{}
next *item
}
//Stack the implementation of stack
//this stack is not thread safe!
type Stack struct {
top *item
size int
}
// Basic stack methods...
问题是,当我将 Huffman 树结构存储在堆栈中时,我无法使用 Huffman 树的任何字段,例如左/右孩子。
package huffmantree
type HuffmanTree struct {
freq int
value byte
isLeaf bool
left *HuffmanTree
right *HuffmanTree
code []bool
depth int
}
我应该如何在 Go 中实现一个堆栈来正确存储结构并允许访问它们的字段?
编辑:
我尝试用huffmantree.HuffmanTree(huffmantree 结构)替换interface {} 部分并收到以下错误消息:
can't load package: import cycle not allowed
package github.com/inondle/huffman/util
imports github.com/inondle/huffman/huffmantree
imports github.com/inondle/huffman/util
import cycle not allowed
我的猜测是 huffmantree 类导入了 util 包,而堆栈必须导入 huffmantree 包,所以存在某种冲突?有谁知道出了什么问题?
【问题讨论】:
-
不使用空接口{},而是使用实际结构。因此,在您的示例中:值 HuffmanTree。
-
go 中的通用版本是不可能的。
-
@0x434D53 我尝试用我的 huffmantree 结构替换接口{},但它导致了一个错误,上面写着
can't load package: import cycle not allowed。