Golang 格式化输出使用"fmt"包。
Print 和 Printf
不自动插入空格,不自动换行Fprint 和 Fprintf
不自动插入空格,不自动换行Sprint 和 Sprintf
不输出,只返回字符串
注意:Sprintf转换字符串(%s)时,可能隐式调用String()方法,可能出现循环调用
type MyString string
func (m MyString) String() string {
return fmt.Sprintf("MyString=%s", m) // Error: 一致循环调用
}
可改为:
type MyString string
func (m MyString) String() string {
return fmt.Sprintf("MyString=%s", string(m)) // OK: 先转换类型
}
- Println
多个参数间自动插入空格
自动换行
//以下输出等效
fmt.Print("Hello ", 23, "\n")
fmt.Printf("Hello %d\n", 23)
fmt.Print(fmt.Sprint("Hello ", 23, "\n"))
fmt.Print(fmt.Sprintf("Hello %d\n", 23))
fmt.Fprint(os.Stdout, "Hello ", 23, "\n")
fmt.Fprintf(os.Stdout, "Hello %d\n", 23)
fmt.Println("Hello", 23)