Go语言: fmt 的使用

Print vs. Println vs. Printf

Print vs. Println

Print 和 Println 基本是一样的,区别在于 Println 在输出后会自动换行, 也就是说,以下两行的输出效果是一样的:

fmt.Print("Testing fmt.\n")
fmt.Println("Testing fmt.")
如果将”\n”写为单独的输入参数
fmt.Print("Testing fmt.", "\n")
由于空格会被自动添加到多个参数中间,以上这行的输出在行末会多一个空格。

Print vs. Printf

  • Printf 的基本用法
实际应用中常用的一种场景,我们需要输出特定格式的输出内容,比如说输出:
"Current Testing function is {function_name}"
其中 function_name 在不同的函数中的实际值是不同的。这个时候,就需要使用 Printf 了。

function_name = "test_fmt"
fmt.Printf("Current Testing function is %v.\n", function_name)
这样,我们就会得到输出:
Current Testing function is test_fmt
如果使用 Print:

function_name = "test_fmt"
fmt.Print("Current Testing function is %v.\n", function_name)
输出结果则是:

Current Testing function is %v.
test_fmt
如果想要得到与 Printf 一样的输出,需要写成
fmt.Print("Current Testing function is ", function_name, "\n")
  • 单个输入参数
Print 可以以任何类型的的数据作为输入参数, string, init, struct等。
Printf 仅能接受 string 类型的输入参数。

Print vs. SPrint

  • 功能不同
Print 将输入参数转换为 string 后, 写入标准输出。也就是程序运行时,我们可以在运行界面看到转换后的 string。
Sprint 仅完成将输入参数转换为String,不会写入标准输出。
  • 函数返回值不同
Print 的返回值有两个,分别表示写入标准输出的字节数以及写入时是否有错误发生:
func Print(a ...interface{}) (n int, err error)
Sprint 返回转换后的字符串:

func Sprint(a ...interface{}) string
  • 类比
    • Println vs. Sprintln
    • Printf vs. Sprintf