一、格式化輸出基礎
fmt.Printf函數是在Go語言中常用的輸出函數之一。在使用中需要指定format格式字元串以及對應的值,然後輸出格式化的結果。其中,format字元串中的格式內容決定了輸出結果的格式,雖然fmt.Printf函數中對於輸出格式的內容有很詳細的說明,但其中的格式卻是由C語言中的printf函數繼承而來,所以我們需要了解C語言中的printf函數。
printf函數中表示格式化信息的佔位符以%開頭,後面接有一個字母來指定輸出的數據類型。下面是一些常見的佔位符及其對應的數據類型:
佔位符 類型
%d 十進位整數
%f 浮點數
%s 字元串
%c 字元
%p 指針地址
%x 十六進位整數
我們可以通過這些佔位符來指定輸出的結果格式,下面是一個簡單的示例:
// 定義一個整型變數
var age int = 29
// 定義一個字元串變數
var name string = "John"
// 在fmt.Printf使用佔位符輸出變數
fmt.Printf("%s is %d years old.\n", name, age)
運行上述代碼,將輸出”John is 29 years old.”因為printf函數會解析format格式字元串,確保通過佔位符指定的每個值都按照對應的類型進行格式化。
二、Printf函數的使用場景
Printf函數提供了豐富的輸出格式選項,可以滿足多種輸出場景,比如:
1、控制台輸出
在控制台輸出中,我們可以使用Printf函數將數據格式化後顯示到控制台。下面是一個簡單的示例:
package main
import "fmt"
func main() {
fmt.Printf("Hello world")
}
運行上述代碼,將輸出Hello world
2、日誌輸出
日誌是記錄程序運行過程中控制信息流的主要渠道。通過fmt.Printf函數和log包中的相關函數(比如log.Printf),可以完成記錄程序運行過程中的關鍵控制信息。下面是一個簡單的示例:
package main
import "log"
func main() {
log.Printf("Hello world")
}
3、格式化字元串輸出
一個常見的應用場景是將一組或多組數據拼接成一個字元串後輸出,例如模板引擎的實現。fmt.Sprintf函數就是用來實現這一目標的。
package main
import "fmt"
func main() {
res := fmt.Sprintf("Hello, %s. You are now %d years old", "張三", 29)
fmt.Println(res)
}
運行上述代碼,將輸出Hello, 張三. You are now 29 years old
三、Printf函數的高級用法
Printf函數提供了豐富的輸出格式選項,下面介紹其中一些非常實用的用法。
1、左對齊和右對齊
在控制台輸出中,很常見的需求是將一個字元串在輸出時靠左對齊或靠右對齊。可以使用%-和%f中的%f來實現對齊。下面是一個簡單的示例:
package main
import "fmt"
func main(){
fmt.Printf("|%f|%f|\n", 1.2, 3.45)
fmt.Printf("|%10f|%10f|\n", 1.2, 3.45)
fmt.Printf("|%-10f|%-10f|\n", 1.2, 3.45)
}
輸出結果如下:
|1.200000|3.450000|
| 1.200000| 3.450000|
|1.200000 |3.450000 |
其中,%10f表示佔用10個字元寬度並將數據顯示在右側(默認是右對齊),%-10f表示左側對齊。
2、填充字元
Printf函數提供了另外一個比較實用的功能,就是填充顯示字元。可以在格式化字元串中加入一個佔位符的數值部分,來指定要輸出的字元的個數。填充字元只能用於數值數據類型的佔位符(比如%d和%f)。下面是一個示例:
package main
import "fmt"
func main(){
fmt.Printf("%3d is the binary representation of %b.\n", 12, 12)
fmt.Printf("%03d is the binary representation of %b.\n", 12, 12)
}
其中,%3d表示輸出一個三位數的整數(前面填充空格),%03d表示輸出一個三位數的整數(前面填充0)。
3、按照Unicode字元寬度對齊
在Printf函數中,可以使用%[n]v來實現按照字元寬度對齊。這種對齊方式適用於中英文混雜的字元串對齊。下面是一個示例:
package main
import "fmt"
func main(){
fmt.Printf("%-20v|%20v\n", "hello", "世界")
fmt.Printf("%-20v|%20v\n", "你好", "world")
}
其中,%v表示佔用一個字元寬度的值。可以通過%-20v表示輸出左對齊的值,%20v表示輸出右對齊的值。
四、fmt.print和fmt.println函數
除了fmt.Printf函數之外,fmt包中還提供了兩個常用的函數fmt.Print和fmt.Println。這兩個函數不支持字元串和值的組合格式化,但是使用起來簡單直接。下面是一個簡單的示例:
// 使用fmt.Print輸出
fmt.Print("hello", 1, 2.0, true)
// 使用fmt.Println輸出
fmt.Println("world", 3, 4.0, false)
其中,fmt.Print將多個參數連接在一起並列印到控制台,而fmt.Println在最後一個參數之後增加一個換行符,並將多個參數連接在一起列印到控制台。
五、總結
在Go語言中,fmt.Printf函數是一個十分實用的輸出函數,通過掌握其基礎使用方法以及高級用法,可以更加方便地完成日常開發任務。
原創文章,作者:NWOZE,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/316080.html