gpt4 book ai didi

templates - 转到模板 : calling method on $variable in template

转载 作者:IT王子 更新时间:2023-10-29 01:47:58 24 4
gpt4 key购买 nike

出于某种原因,我的模板无法正常工作,我也说不出原因。的值(value) 。是一个 map[string]UpFile ,其中 UpFile 是一个结构,其方法 Path() 不带任何参数。这是模板的相关部分:

{{ range $key, $value := . }}
<a href="{{ $value.Path }}">{{ $key }}</a>
{{ end }}

该模板无需调用变量 $value 上的 Path() 即可工作。我还测试了当 .是 UpFile,它起作用了。模板上的 go doc 说对变量方法的调用很好。模板编译并提供,但是范围内的任何内容都没有输出。当我省略对 Path() 的调用时,我得到一串字符。感谢您查看。

编辑:使用 UpFile 中的字段而不是 Path 方法提供预期的输出。仍然不明白为什么调用 Path 不起作用。

最佳答案

Path 方法在指针接收器上:

func (f *UpFile) Path() string { return f.path }

$path 中的值是一个Path。方法 Path() 无法在 Path 上调用,因为指针接收器方法不在值类型的 method set 中.

有两种方法可以解决这个问题。第一种是用值接收者声明方法:

func (f UpFile) Path() string { return f.path }

解决此问题的第二种方法是使用 *Path 值而不是 Path 值。将 map 更改为:

var m map[string]*UpFile

关于templates - 转到模板 : calling method on $variable in template,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35787799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com