答案是path未正确配置:windows需添加%goroot%\bin到系统环境变量,macos/linux需在~/.zshrc或~/.bash_profile中添加export path=$goroot/bin:$path并source生效,否则go version报“command not found”。

go version 命令失败,PATH 没配对
直接运行 go version 报错 “command not found”,说明 Go 二进制没进系统 PATH。这不是安装失败,而是环境变量漏了。
- Windows 用户:检查系统环境变量里是否有
%GOROOT%\bin(默认是C:\Program Files\Go\bin),没加就手动补上 - macOS/Linux 用户:确认
~/.zshrc或~/.bash_profile里写了export PATH=$GOROOT/bin:$PATH,然后执行source ~/.zshrc - 别信“安装完自动配置”——Linux 手动解压版、某些 macOS Homebrew 安装方式都不会自动写 PATH
html/template 渲染时页面空白或报错 template: index.html:1: unexpected “
这是模板文件被当成了纯 HTML 直接读取,没经过 template.ParseFiles 解析。常见于路径错误或文件未被加载。
Go语言(Golang)1.26.0版本提供 Go 官方 Windows amd64 MSI 安装包下载入口,版本号 1.26.0,可用于旧项目维护、兼容性测试和指定版本开发环境配置。
- 确保
ParseFiles("templates/index.html")中的路径是相对 **当前工作目录**(不是 .go 文件所在目录) - 用
os.Getwd()打印当前路径,确认templates/真的存在且可读 - 模板文件首行不能有 BOM 字符(尤其 Windows 记事本保存时容易带),用 VS Code 或 Vim 以 UTF-8 without BOM 保存
- 如果用
template.New("x").Parse(...),注意Parse只接受字符串内容,不是文件路径;要读文件得先ioutil.ReadFile或os.ReadFile(Go 1.16+)
Gin 里用 LoadHTMLGlob 却找不到模板
r.LoadHTMLGlob("templates/**/*") 看似万能,但实际只匹配一级子目录,** 在 Go 标准库中不支持通配递归。
- 正确写法是明确列出层级:
r.LoadHTMLGlob("templates/*.html")或r.LoadHTMLGlob("templates/**/*.html")—— 但后者依赖 Gin 内部 glob 实现,不同版本行为不一 - Gin v1.9+ 推荐用
r.LoadHTMLFiles("templates/base.html", "templates/index.html")显式指定,避免路径歧义 - 模板里用
{{template "header" .}}前,确保"header"已在某个被加载的文件中定义过{{define "header"}} - 别把模板放在
static/下——Gin 的StaticFS会把它当静态资源返回 raw HTML,不渲染
自定义模板函数在 html/template 里注册后不生效
template.Funcs 必须在 Parse 或 ParseFiles 之前调用,顺序错了函数就不可见。
- 错误写法:
tpl := template.New("x").ParseFiles(...).Funcs(...)——ParseFiles返回的是*template.Template,链式调用后Funcs作用在新模板上,原模板没变 - 正确写法:
tpl := template.New("x").Funcs(myFuncMap).ParseFiles(...) - 函数签名必须是 Go 导出函数(首字母大写),且参数、返回值类型要严格匹配;比如
func FormatDate(t time.Time) string可以,func formatDate(...)不行 - 如果函数里 panic,整个模板执行会中断,建议用
recover包一层,或提前校验输入
os.Getwd() 和 template.String()(调试用),比猜强。golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










