Golang fmt.Print 函数
最后修改时间 2025 年 5 月 8 日
本教程解释了如何在 Go 中使用 fmt.Print
函数。我们将通过 Go 程序中打印的实际示例来介绍基本输出。
fmt.Print
函数在不进行格式化的情况下写入标准输出。它按出现的顺序打印其参数,并在它们之间添加空格。与 fmt.Println
不同,它不在末尾添加换行符。
在 Go 中,fmt.Print
是用于 I/O 操作的 fmt 包的一部分。当您不需要特殊的格式化或换行控制时,它对于简单的输出很有用。
基本的 fmt.Print 示例
fmt.Print
最简单的用法是将值输出到控制台。此示例演示了不同值类型的基本打印。
注意:值之间会用空格隔开。
package main import "fmt" func main() { fmt.Print("Hello, ") fmt.Print("World!") fmt.Print(42) fmt.Print(true) fmt.Print("\n") // Manual newline }
输出出现在一行上:“Hello, World!42true”。请注意值是如何连接在一起的,而没有自动空格或换行符。
打印多个值
fmt.Print
可以接受不同类型的多个参数。此示例展示了一起打印各种数据类型。
package main import "fmt" func main() { name := "Alice" age := 30 pi := 3.14159 fmt.Print("Name: ", name, " Age: ", age, " Pi: ", pi, "\n") fmt.Print("Types - name: ", fmt.Sprintf("%T", name), " age: ", fmt.Sprintf("%T", age), "\n") }
该函数会自动将值转换为字符串,并用空格分隔它们。输出显示所有值都在一行上。
不带空格打印
要打印没有自动空格的值,请先将它们连接起来。此示例演示了如何控制输出中的空格。
package main import "fmt" func main() { fmt.Print("The answer is" + " " + fmt.Sprint(42) + "\n") fmt.Print("No", "Spaces", "Between", "Words", "\n") fmt.Print("Concatenated" + "String" + "\n") }
使用 + 运算符进行字符串连接可避免自动空格。输出显示紧密排列的文本,没有额外的空格。
打印特殊字符
fmt.Print
可以处理像制表符和换行符这样的特殊字符。此示例展示了在输出中使用转义序列。
package main import "fmt" func main() { fmt.Print("First line\nSecond line\n") fmt.Print("Column1\tColumn2\tColumn3\n") fmt.Print("Backslash: \\ \t Quote: \" \t Apostrophe: '\n") fmt.Print("Alert: \a \t Backspace: \b \t Form feed: \f\n") }
转义序列按预期工作,可以控制输出格式。请注意,某些特殊字符在不同终端上的行为可能不同。
打印结构体和切片
fmt.Print
可以打印结构体和切片等复杂类型。此示例演示了如何打印复合数据类型。
package main import "fmt" type Person struct { Name string Age int } func main() { p := Person{"Bob", 25} nums := []int{1, 2, 3, 4, 5} fmt.Print("Person: ", p, "\n") fmt.Print("Numbers: ", nums, "\n") fmt.Print("Slice capacity: ", cap(nums), "\n") }
复合类型以默认格式打印。有关自定义格式,请考虑使用带有格式说明符的 fmt.Printf
。
打印到文件
fmt.Fprint
是一个通用的版本,它写入任何 io.Writer。此示例演示了如何将内容打印到文件而不是标准输出。
package main import ( "fmt" "os" ) func main() { file, err := os.Create("output.txt") if err != nil { panic(err) } defer file.Close() fmt.Fprint(file, "This goes to a file\n") fmt.Fprint(file, "Multiple ", "values ", 42, "\n") fmt.Print("Check output.txt for results\n") }
fmt.Fprint
函数的工作方式类似于 fmt.Print
,但它写入指定的 io.Writer。这种模式适用于任何写入器。
性能注意事项
为了获得高性能的打印,请在写入之前缓冲您的输出。此示例比较了不同的打印方法。
package main import ( "fmt" "strings" "time" ) func printMethod() { start := time.Now() for i := 0; i < 10000; i++ { fmt.Print("iteration ", i, " ") } fmt.Println("\nfmt.Print duration:", time.Since(start)) } func builderMethod() { start := time.Now() var b strings.Builder for i := 0; i < 10000; i++ { fmt.Fprint(&b, "iteration ", i, " ") } fmt.Print(b.String()) fmt.Println("\nstrings.Builder duration:", time.Since(start)) } func main() { printMethod() builderMethod() }
使用 strings.Builder 缓冲输出对于许多小写入来说更快。在性能关键的代码中,这种差异会变得很显著。
来源
本教程通过基本输出操作和格式化的实际示例,介绍了 Go 中的 fmt.Print
函数。