如何将多个变量传递给Go HTML模板

时间:2018-04-28 20:12:40

标签: go go-templates

我是golang的新手。我想将多个变量传递给html。 所以我有类似的类型:

referenced_column_name

Pagevarible传递了正确的值

SELECT kcu.table_schema, kcu.table_name, kcu.column_name, c1.column_type, 
       kcu.referenced_table_schema, kcu.referenced_table_name, 
       kcu.referenced_column_name, c2.column_type
  FROM information_schema.key_column_usage kcu 
  JOIN information_schema.columns c1 
    ON c1.table_schema = kcu.table_schema AND 
       c1.table_name   = kcu.table_name AND 
       c1.column_name  = kcu.column_name
  JOIN information_schema.columns c2 
    ON c2.table_schema = kcu.referenced_table_schema AND 
       c2.table_name   = kcu.referenced_table_name AND 
       c2.column_name  = kcu.referenced_column_name
 WHERE kcu.referenced_table_schema = 'schema_to_check' 
   AND kcu.referenced_table_name   = 'table_to_check' 
   AND kcu.referenced_column_name  = 'column_to_check';

我想将UserNames和Checks传递给html模板,例如:

type Variables struct { 
    UserNames    []string  
    Checks       []string
}

但它没有成功。 有人可以纠正我的语法吗? 非常感谢。

2 个答案:

答案 0 :(得分:2)

当您通过范围内的.引用字段时,它期望该项目上的字段为范围,因此在这种情况下

{{range .UserNames}}
{{$check := .Checks}}

它在用户名列表中的当前实例上查找“检查”字段。如果检查与(与PageVars中显示的那样)分开,那么您可以使用$对顶级对象的引用,例如

{{range .UserNames}}
{{$check := $.Checks}} 

您没有发布执行模板的代码,但请确保您正在检查从其返回的错误。

答案 1 :(得分:2)

使用索引变量的范围,使用该索引来获取检查:

{{range $i, $user := .UserNames}}
{{$check := index $.Checks $i}}
{{$user}}: <input type="checkbox" name="email" value={{$user}} {{$check}}/><br />
{{end}}

范围将光标.设置为切片的连续值。使用$引用模板参数中的Checks字段。

playground example