深入淺出fmt.printf函數

一、格式化輸出基礎

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NWOZE的頭像NWOZE
上一篇 2025-01-09 12:14
下一篇 2025-01-09 12:14

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • 分段函數Python

    本文將從以下幾個方面詳細闡述Python中的分段函數,包括函數基本定義、調用示例、圖像繪製、函數優化和應用實例。 一、函數基本定義 分段函數又稱為條件函數,指一條直線段或曲線段,由…

    編程 2025-04-29
  • Python函數名稱相同參數不同:多態

    Python是一門面向對象的編程語言,它強烈支持多態性 一、什麼是多態多態是面向對象三大特性中的一種,它指的是:相同的函數名稱可以有不同的實現方式。也就是說,不同的對象調用同名方法…

    編程 2025-04-29

發表回復

登錄後才能評論