【发布时间】:2020-10-07 23:52:18
【问题描述】:
我有这个 Router 结构,它有一个属性,其中包含指向结构的指针映射:
type Router struct {
tree map[string]*node
}
创建路由器:
func New() *Router {
return &Router{
make(map[string]*node),
}
}
节点结构如下所示:
type node struct {
path string
method string
}
然后我像这样添加键:值对:
func (r *Router) GET(path string) {
r.tree["GET"] = createNode(path, "GET")
fmt.Println("GET:r:", r.tree)
}
func createNode(path string, method string) *node {
return &node{path, "GET"}
}
然后我尝试像这样使用这个包:
var server = goserve.New()
func main() {
server.GET("/home")
fmt.Printf("%+v", server)
}
问题是当我运行使用这个包的模块时,我看到的是地址而不是节点结构中的值,我认为指针应该显示。我很困惑,因为 New 函数返回一个 *Router 并以我期望的方式显示,而 createNode 函数返回 *node (也是一个指针)但没有正确显示它......我是什么不见了?
结果:
GET:r: map[GET:0xc00000e2e0]
&{tree:map[GET:0xc00000e2e0]}%
请注意,我使用了两种不同的打印方法,但都不起作用
【问题讨论】:
标签: go