关于template模版解析结构体方法的一些疑惑?

文中模版中解析结构体方法的代码如:

{{ RouteName2URL "articles.update" "id" .GetStringID }}

其中GetStringID是结构体BaseModel的方法,因为自己的一些失误,此前一直将该方法写成了指针方法:

func (m *BaseModel) GetStringID() string {
    return types.Uint64ToString(m.ID)
}

因为这个原因导致了show.gohtml一直无法解析出删除和编辑的按钮,其中.GetStringID一直无法解析出正确的值所以无法显示。想请问下结构体方法结构体指针方法为什么会导致模版解析不出?(自己的理解是应该没什么影响的)

另外还有一个情况就是当我写成结构体指针的方法时,在如下代码却又能正常解析模版:

{{ range $key, $article := . }}
{{ $article.GetStringID }}
{{ end }}

就相当于切片类型的数据传入模版,模版可以解析出结构体的指针方法这让我更加有点疑惑!请各位大佬指点下🙏

讨论数量: 1
ramsey

遇到了同样的问题,感觉很奇怪~~~

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!