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 函数。