Go模板条件修改变量报错:bad character U+003D '='
问题解决:Go模板中条件修改变量报错
bad character U+003D '=' 问题原因
你遇到的错误源于Go text/template 的语法规则:赋值操作符=的前后必须有空格,且重新赋值已声明变量需使用=(而非声明新变量的:=)。你的代码中{{$a=5}}未在=前后添加空格,导致模板解析器无法识别合法语法,因此抛出错误。
修正后的代码
package main import ( "text/template" "os" ) func main() { type Inventory struct { Material string Count uint } sweaters := Inventory{"wool", 17} templateString := `{{.Count}} items are made of {{.Material}} {{$a := 0}} {{if eq .Material "wool"}} {{$a = 5}} {{end}} {{$a}}` tmpl, err := template.New("test").Parse(templateString) if err != nil { panic(err) } err = tmpl.Execute(os.Stdout, sweaters) if err != nil { panic(err) } }
关键语法说明
- 声明新变量:使用
{{$变量名 := 值}},仅能在变量首次定义时使用 - 重新赋值变量:使用
{{$变量名 = 值}},必须保证=前后有空格,这是模板语法的强制要求
内容的提问来源于stack exchange,提问作者89f3a1c
相关产品推荐
相关产品推荐

