【发布时间】:2019-06-06 20:03:34
【问题描述】:
我想实现一个图数据结构,其中每个节点用以下方式表示:
type Node struct {
root string
links []*Node
}
基本上每个节点都有一个值root 和一个链接列表,对于每个链接a 只想存储一个指向它的指针,因为结构的内存将由映射分配和拥有:
rooturl := "root"
graph := Node{rooturl, []*Node{}}
graphMap := make(map[string]Node)
graphMap[rooturl] = graph
当我尝试将指针附加到新创建的节点时出现问题:
u := "new node"
// if the link is not stored in the graph not create a new node
if _, exists := graphMap[u]; !exists {
graphMap[u] = Node{u, []*Node{}}
}
// add the links to the graph
graphMap[rooturl].links = append(graphMap[rooturl].links, &graphMap[u])
我收到两个错误:
不能分配给结构字段graphMap[rooturl].links in map
和
不能取graphMap[u]的地址
我应该如何正确解决这个问题?
我还希望在附加时需要使用graphMap[rooturl].links 查询地图两次(但由于我无法获取指针或对它的引用,我不知道如何)
【问题讨论】:
标签: dictionary pointers go linked-list