go安装后go version报command not found,根本原因是系统未将go的bin目录加入path;macos/linux需在~/.zshrc或~/.bash_profile中添加export path=$path:/usr/local/go/bin并source生效,windows需在系统环境变量path中新增c:\program files\go\bin,验证需新开终端执行go version成功输出版本号。

Go安装后go version报错:command not found
说明系统根本没把Go的bin目录加进PATH。Mac/Linux用户检查~/.zshrc或~/.bash_profile,Windows用户得去“系统属性→环境变量”里手动加。
实操建议:
- Mac/Linux下执行:
export PATH=$PATH:/usr/local/go/bin(如果Go装在默认路径),然后source ~/.zshrc - Windows安装时勾选“Add Go to PATH”,若跳过了,就手动把
C:\Program Files\Go\bin(或你自定义的安装路径)加进系统PATH - 验证:新开终端运行
go version,看到类似go version go1.22.3 darwin/arm64才算成功
写完main.go却提示package main must be declared
这是新手最常卡住的地方——Go要求每个可执行文件必须以package main开头,且必须包含func main()函数。漏掉任一,编译直接失败。
实操建议:
- 文件第一行必须是
package main,不能是package myapp或空着 -
main()函数必须在同一个文件里,且签名严格为func main()(无参数、无返回值) - 别用IDE自动生成的模板改漏了——比如删掉了
package main只留func main(),就会触发这个错误
fmt.Scanln读不到输入?换行符卡住了
fmt.Scanln只读到换行符就停,且会把换行符吃掉;但如果你之前用了fmt.Scan或fmt.Scanf,它们不吞换行符,残留的\n会让紧接着的Scanln立刻返回空——看起来像“没读到”。
实操建议:
- 统一用
fmt.Scanln读字符串或数字时,确保前面没混用其他Scan类函数 - 更稳妥的做法是用
fmt.Scan(它自动跳过空白,包括换行)或bufio.NewReader(os.Stdin).ReadString('\n')来精确控制 - 调试时加一句
fmt.Printf("got: '%s'\n", s),能一眼看出是不是读到了空字符串
Windows下中文输出乱码,fmt.Println("你好")显示问号
Go本身支持UTF-8,问题出在Windows控制台默认编码是GBK。Go程序输出UTF-8字节流,cmd却用GBK解码,自然崩。
实操建议:
- 临时解决:在命令行先执行
chcp 65001(切换到UTF-8代码页),再运行go run main.go - 一劳永逸:用VS Code + Go插件,默认终端已设好UTF-8;或者用Windows Terminal(微软商店免费),它原生支持UTF-8
- 避免硬编码:不要用
os.Stdout.Write([]byte{...})手动写字节,老老实实用fmt.Println,它内部处理了编码协商
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











