ZetCode

Golang fmt.Sprintln 函数

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

本教程解释了如何在 Go 中使用 fmt.Sprintln 函数。我们将通过格式化输出的实际示例,涵盖字符串格式化的基础知识。

fmt.Sprintln 函数将其实参格式化为一个字符串,在操作数之间添加空格并在末尾追加一个换行符。它返回结果字符串。这对于在不进行直接输出的情况下创建格式化字符串非常有用。

在 Go 中,fmt.Sprintln 是 fmt 包的字符串格式化函数的一部分。它类似于 fmt.Println,但它返回一个字符串而不是写入标准输出。

基本的 fmt.Sprintln 示例

fmt.Sprintln 最简单的用法是将基本值格式化为字符串。此示例演示了对不同值类型的基本字符串格式化。

basic_sprintln.go
package main

import (
    "fmt"
)

func main() {
    name := "Alice"
    age := 30
    height := 5.8
    
    result := fmt.Sprintln("Name:", name, "Age:", age, "Height:", height)
    fmt.Print("Formatted string: ", result)
}

该函数将字符串、整数和浮点数组合成一个格式化的字符串。操作数之间会自动添加空格,并在末尾添加一个换行符。

格式化多个值

fmt.Sprintln 可以格式化不同类型的多个值。此示例展示了它如何在单个调用中处理各种数据类型。

multiple_values.go
package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    active := true
    score := 95.5
    
    info := fmt.Sprintln("Current time:", now, "Active:", active, "Score:", score)
    fmt.Print("System info:\n", info)
}

该函数将时间值、布尔值和浮点数与字符串一起格式化。输出保持适当的间距并包含一个尾随的换行符。

与结构体一起使用

fmt.Sprintln 可以格式化结构体值。此示例演示了具有默认字符串表示的结构体格式化。

struct_formatting.go
package main

import (
    "fmt"
)

type Person struct {
    Name string
    Age  int
}

func main() {
    p := Person{Name: "Bob", Age: 42}
    output := fmt.Sprintln("Person details:", p)
    fmt.Print(output)
}

结构体使用其默认字符串表示进行格式化。输出包含具有适当间距和换行符的结构体字段值。

与字符串连接结合使用

fmt.Sprintln 的结果可以与其他字符串合并。此示例显示了字符串连接和格式化输出。

string_concat.go
package main

import (
    "fmt"
)

func main() {
    item := "book"
    price := 29.99
    quantity := 3
    
    header := "ORDER DETAILS\n"
    details := fmt.Sprintln("Item:", item, "Price:", price, "Quantity:", quantity)
    total := fmt.Sprintf("Total: $%.2f\n", price*float64(quantity))
    
    fullOutput := header + details + total
    fmt.Print(fullOutput)
}

来自 fmt.Sprintln 的格式化字符串与其他字符串结合,以创建完整的输出。这展示了灵活的字符串构建。

格式化切片和数组

fmt.Sprintln 可以格式化切片和数组值。此示例展示了具有默认表示的集合格式化。

slice_formatting.go
package main

import (
    "fmt"
)

func main() {
    numbers := []int{1, 2, 3, 4, 5}
    colors := [3]string{"red", "green", "blue"}
    
    list := fmt.Sprintln("Numbers:", numbers, "Colors:", colors)
    fmt.Print("Collections:\n", list)
}

切片和数组值都使用方括号显示其元素进行格式化。输出保持一致的间距并包含一个换行符。

自定义类型格式化

实现 Stringer 接口的类型可以自定义其格式化。此示例演示了使用 fmt.Sprintln 进行自定义字符串表示。

custom_formatting.go
package main

import (
    "fmt"
)

type Temperature float64

func (t Temperature) String() string {
    return fmt.Sprintf("%.1f°C", t)
}

func main() {
    temp := Temperature(23.5)
    output := fmt.Sprintln("Current temperature:", temp)
    fmt.Print(output)
}

Temperature 类型实现了 Stringer 接口以提供自定义格式化。fmt.Sprintln 使用此自定义表示。

使用 fmt.Sprintln 进行错误处理

fmt.Sprintln 可以帮助格式化错误消息。此示例展示了带有上下文信息的错误消息格式化。

error_formatting.go
package main

import (
    "fmt"
    "os"
)

func checkFile(filename string) error {
    _, err := os.Stat(filename)
    if err != nil {
        return fmt.Errorf("file error: %v", err)
    }
    return nil
}

func main() {
    err := checkFile("missing.txt")
    if err != nil {
        msg := fmt.Sprintln("Operation failed:", err)
        fmt.Print(msg)
    }
}

错误消息使用 fmt.Sprintln 和其他上下文信息进行格式化。这会创建一条带有适当间距和换行符的完整错误消息。

来源

Go fmt 包文档

本教程通过字符串格式化和输出生成的实际示例,涵盖了 Go 中的 fmt.Sprintln 函数。

作者

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

列出所有 Golang 教程