Go中Println不是内置函数,而是fmt包导出函数,未导入"fmt"包或省略fmt.前缀会导致undefined错误;fmt.Println自动换行并加空格,fmt.Print不换行不加空格,fmt.Printf支持格式化但不自动换行。

Go 里没有 Println 函数,只有 fmt.Println —— 它不属于语言内置,而是 fmt 包提供的导出函数,必须显式导入才能用。
为什么直接写 Println("hello") 会报错?
Go 不像 Python 或 JavaScript 那样把打印函数放在全局作用域。所有 I/O 操作都封装在标准库包中,Println 是 fmt 包的成员,不是关键字也不是内置函数。
- 错误现象:
undefined: Println - 根本原因:没导入
"fmt"包,或拼写成printlN、println(小写)等 - 正确写法必须是:
fmt.Println("hello"),且文件顶部有import "fmt"
fmt.Println 和 fmt.Print、fmt.Printf 的核心区别
三者都在 fmt 包里,但行为不同,选错会导致输出格式异常或调试困难:
-
fmt.Println:自动在参数末尾加换行符\n,各参数间加空格 -
fmt.Print:不换行、不加空格,适合拼接输出(比如进度条) -
fmt.Printf:支持格式化动词(如%s、%d),但不会自动换行,常忘加\n导致下一行输出粘连
示例:
fmt.Print("a"); fmt.Print("b") // 输出:ab(无空格无换行)<br>fmt.Println("a", "b") // 输出:a b\n(带空格+换行)<br>fmt.Printf("%s%d", "x", 1) // 输出:x1(无换行)
控制台输出中文乱码?常见于 Windows CMD 或旧终端
Go 编译和运行本身完全支持 UTF-8,乱码几乎总是终端环境问题,不是 Go 的锅:
- Windows CMD 默认编码是 GBK,而 Go 源文件和字符串字面量默认 UTF-8
- 临时解决:在 CMD 中执行
chcp 65001切换为 UTF-8 模式 - 长期建议:改用支持 UTF-8 的终端(如 Windows Terminal、Git Bash、VS Code 集成终端)
- 注意:
go run直接运行没问题,但用 IDE 点击“运行”时,某些旧版 IDE 可能未正确配置终端编码
最容易被忽略的是:很多人在复制示例代码时漏掉 import "fmt",或者把 fmt. 手误删了——这时候编译器报的 undefined 错误,第一反应不该是“Go 怎么没这个函数”,而是检查导入和调用前缀是否完整。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











