ZetCode

Golang println 函数

最后修改时间 2025 年 5 月 8 日

本教程解释了如何在 Go 中使用内置的 println 函数。我们将通过调试和日志记录的实际示例涵盖基本输出。

println 函数是 Go 中的一个内置函数,它向标准错误输出。它主要用于调试和开发期间的临时输出。与 fmt.Println 不同,它不需要导入。

在 Go 中,println 接受任何类型的多个参数,并以空格分隔的值打印。它在末尾添加一个换行符。输出格式取决于实现,并且可能因平台而异。

基本的 println 示例

println 最简单的用法是将值输出到标准错误。此示例演示了不同值类型的基本打印。
注意:对于生产代码,请优先使用 fmt 包。

basic_println.go
package main

func main() {
    println("Hello, Go!")
    println(42)
    println(3.14)
    println(true)
    println('A')
}

该示例打印一个字符串、一个整数、一个浮点数、一个布尔值和一个 rune。每次调用 println 都会在新行上输出。输出格式是基础的。

打印多个值

println 可以接受不同类型的多个参数。此示例演示了如何在一次调用中打印多个值。

multiple_values.go
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 通常用于开发期间的快速调试。此示例演示了其在变量检查中的使用。

debugging.go
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

此示例将 printlnfmt.Println 进行比较。它突出了这两种方法的格式差异。

comparison.go
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 调用。此示例演示了并发打印。

goroutines.go
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 语言规范

本教程通过调试和临时输出场景的实际示例,介绍了 Go 中的 println 函数。

作者

我叫 Jan Bodnar,是一名充满激情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 Golang 教程