Golang fmt.Sprintln 函数
最后修改时间 2025 年 5 月 8 日
本教程解释了如何在 Go 中使用 fmt.Sprintln 函数。我们将通过格式化输出的实际示例,涵盖字符串格式化的基础知识。
fmt.Sprintln 函数将其实参格式化为一个字符串,在操作数之间添加空格并在末尾追加一个换行符。它返回结果字符串。这对于在不进行直接输出的情况下创建格式化字符串非常有用。
在 Go 中,fmt.Sprintln 是 fmt 包的字符串格式化函数的一部分。它类似于 fmt.Println,但它返回一个字符串而不是写入标准输出。
基本的 fmt.Sprintln 示例
fmt.Sprintln 最简单的用法是将基本值格式化为字符串。此示例演示了对不同值类型的基本字符串格式化。
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 可以格式化不同类型的多个值。此示例展示了它如何在单个调用中处理各种数据类型。
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 可以格式化结构体值。此示例演示了具有默认字符串表示的结构体格式化。
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 的结果可以与其他字符串合并。此示例显示了字符串连接和格式化输出。
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 可以格式化切片和数组值。此示例展示了具有默认表示的集合格式化。
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 进行自定义字符串表示。
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 可以帮助格式化错误消息。此示例展示了带有上下文信息的错误消息格式化。
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.Sprintln 函数。