You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:46:15