当前位置: 首页 > 面试题库 >

使用范围从模板构建时,Go无法评估字段

吕俊美
2023-03-14
问题内容

Files的片File结构,我的围棋程序,以保持名称和文件的大小。我创建了模板,如下所示:

type File struct {
    FileName string
    FileSize int64
}
var Files []File
const tmpl = `
    {{range .Files}}
    file {{.}}
    {{end}}
    `
t := template.Must(template.New("html").Parse(tmplhtml))
    err = t.Execute(os.Stdout, Files)
    if err != nil { panic(err) }

我当然会慌张地说:

无法评估[] main.File类型的字段文件

不确定如何range在模板中正确显示文件名和大小。


问题答案:

管道的初始值(
)是传递给您的值Template.Execute(),在这种情况下,Files该值是type
[]File

因此,在模板执行期间, .[]File。该切片没有命名Files.Files模板中将引用的字段或方法的字段。

您应该做的就是简单地使用.它,它指向您的切片:

const tmpl = `
    {{range .}}
    file {{.}}
    {{end}}
`

就这样。测试它:

var Files []File = []File{
    File{"data.txt", 123},
    File{"prog.txt", 5678},
}
t := template.Must(template.New("html").Parse(tmpl))
err := t.Execute(os.Stdout, Files)

输出(在Go Playground上尝试):

file {data.txt 123}

file {prog.txt 5678}


 类似资料:
  • 问题内容: 我有一个像这样的模板: 我得到下面的输出: 我想渲染如下: 我无法摆脱最后一个逗号来制作有效的json。还是可能以某种方式将完整的范围块发送到某些自定义联接功能? 问题答案: 这是一个如何使用模板的示例,但是如果要生成JSON,我强烈建议使用第二种方法。 坚持使用模板 由于您在地图上范围很广,因此您无法(简单地)做到这一点。如果是切片,则可以检查index变量(例如:Go模板除去ran

  • 问题内容: 我如何创建一些简单的ajax评级,如本页http://watir.com/documentation/所示?每个访问者都应该能够评分,我不需要设置权限。我想将评级存储在列中。因此,用户可以按评分排序。请举一个详细的例子。我不是JavaScript专家。 我找到了一个从头开始创建评分的示例。但是它授权用户。有人可以向我显示创建没有评分者(用户)的评分的指南吗?它不仅应存储值,还应计算票数

  • 我正在开发我的第一个Spring boot应用程序。它使用MVC模式,并使用Thymleaf来呈现HTML。我有一个显示模型变量的简单HTML模板。不幸的是,我在访问该特定映射/url时遇到以下错误: 出现意外错误(type=内部服务器错误,状态=500)。异常评估SpringEL表达式:"雇员。Lastname(模板:雇员-第22行,第8行) 我想不出是什么问题。 我正在使用百里香叶3.0。11

  • 问题内容: 假设我有 如何从html / template使用此方法?我的模板中需要这样的东西: 问题答案: 只需省略括号就可以了。例: 根据文档,您可以调用任何返回一个值(任何类型)或两个值(如果第二个是type)的方法。在后一种情况下,如果该错误为非nil ,则将返回该错误并停止执行模板。

  • 因为我放在容器中的应用程序的bin名称可以更改(docker构建是更大构建的一部分,我很容易将正确的名称从一个构建传递到另一个构建)我想做这样的事情: < code >入口点["$PATH_TO_BIN"] 但由于没有外壳来评估,这通常会失败。理论上我可以去 但在这种情况下,我在执行时无法传递任何参数。 有没有可能在构建期间使用exec form并计算args或env变量(这样在运行时就不需要sh

  • 模型在训练集上的误差通常称为 “训练误差” 或 “经验误差”,而在新样本上的误差称为 “泛化误差”。显然,机器学习的目的是得到泛化误差小的学习器。然而,在实际应用中,新样本是未知的,所以只能使训练误差尽量小。 当模型在训练集上表现很好而在新样本上误差很大时,称为 “过拟合”;反之,模型在训练集上误差就很大时,称为 “欠拟合”。 欠拟合通常容易解决,如 增加数据、增大训练次数、增大学习率或使用更复杂