我一直在尝试在Go中使用Heap包,但不确定如何初始化它。
package main
import "container/heap"
type PriorityMessage struct {
Priority int
Message string
}
func priorityQueue() {
//WOULD THIS not initialize the heap?
h := heap.Init(h PriorityMessage)
}
我一直在尝试在线查找有关其他人如何初始化其堆的示例,并且所有人似乎每次都创建自己的Go堆程序包版本。从堆包中调用heap.Init(h Interface)函数会不起作用吗?
答案 0 :(得分:2)
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
public class Test {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String test = "2+2";
System.out.println(engine.eval(test));
}
}```
答案 1 :(得分:0)
有堆。首先应该实现接口。
type Interface interface {
sort.Interface
Push(x interface{}) // add x as element Len()
Pop() interface{} // remove and return element Len() - 1.
}
这意味着您应该为PriorityMessage结构提供必要的方法。将结构实例传递到堆之后。Init(&pm)。
您可以在godoc中找到评论链接中的详细信息。
只是为了澄清混乱。 Go是一种缺少泛型的强类型语言。因此,堆包的设计方式与类型无关。您可以为要实现的所有类型创建自己的实现。任何类型都可以实现堆。堆包可以使用接口。