Golang println 函数
最后修改时间 2025 年 5 月 8 日
本教程解释了如何在 Go 中使用内置的 println 函数。我们将通过调试和日志记录的实际示例涵盖基本输出。
println 函数是 Go 中的一个内置函数,它向标准错误输出。它主要用于调试和开发期间的临时输出。与 fmt.Println 不同,它不需要导入。
在 Go 中,println 接受任何类型的多个参数,并以空格分隔的值打印。它在末尾添加一个换行符。输出格式取决于实现,并且可能因平台而异。
基本的 println 示例
println 最简单的用法是将值输出到标准错误。此示例演示了不同值类型的基本打印。
注意:对于生产代码,请优先使用 fmt 包。
package main
func main() {
println("Hello, Go!")
println(42)
println(3.14)
println(true)
println('A')
}
该示例打印一个字符串、一个整数、一个浮点数、一个布尔值和一个 rune。每次调用 println 都会在新行上输出。输出格式是基础的。
打印多个值
println 可以接受不同类型的多个参数。此示例演示了如何在一次调用中打印多个值。
package main
func main() {
name := "Alice"
age := 30
height := 1.75
println("Name:", name, "Age:", age, "Height:", height)
a, b := 10, 20
println("Values:", a, b, "Sum:", a+b)
}
该函数打印所有参数,用空格分隔。表达式在打印前进行求值。输出格式的自定义性不如 fmt。
使用 println 进行调试
println 通常用于开发期间的快速调试。此示例演示了其在变量检查中的使用。
package main
func calculate(x, y int) int {
println("calculate called with", x, y)
result := x * y
println("intermediate result:", result)
return result + 1
}
func main() {
a := 5
b := 7
println("Before calculation")
res := calculate(a, b)
println("Final result:", res)
}
调试打印有助于跟踪函数调用和中间值。这对于没有正确日志记录设置的快速诊断非常有用。
Println 与 fmt.Println
此示例将 println 与 fmt.Println 进行比较。它突出了这两种方法的格式差异。
package main
import "fmt"
func main() {
value := 3.141592653589793
println("Built-in println:", value)
fmt.Println("fmt.Println:", value)
println("Built-in (struct):", struct{ x int }{42})
fmt.Println("fmt.Println (struct):", struct{ x int }{42})
}
fmt.Println 为复杂类型提供了更好的格式。内置的 println 输出更基础,一致性更差。
goroutine 中的 Println
println 可以安全地从多个 goroutine 调用。此示例演示了并发打印。
package main
import (
"sync"
"time"
)
func worker(id int, wg *sync.WaitGroup) {
defer wg.Done()
println("Worker", id, "started")
time.Sleep(time.Second)
println("Worker", id, "finished")
}
func main() {
var wg sync.WaitGroup
for i := 1; i <= 3; i++ {
wg.Add(1)
go worker(i, &wg)
}
wg.Wait()
println("All workers completed")
}
输出显示来自不同 goroutine 的交错消息。println 可以安全地处理并发调用,尽管输出可能会以不可预测的方式混合。
来源
本教程通过调试和临时输出场景的实际示例,介绍了 Go 中的 println 函数。