strconv 包也是我們在 Go 語言中經常會使用到的包,通常用於在字符串與基本數據類型之間進行轉換。它提供了一系列函數來處理字符串的解析(parsing)和格式化(formatting)操作。
簡要介紹#
下面是 strconv 包中一些常用的函數和其功能的簡要介紹:
-
strconv.Itoa:將整數轉換為字符串。它接受一個整數值,並返回表示該整數的字符串形式。
示例:
import ( "fmt" "strconv" ) func main() { num := 42 str := strconv.Itoa(num) fmt.Println(str) // 輸出: "42" }
-
strconv.Atoi:將字符串轉換為整數。它接受一個表示整數的字符串,並返回對應的整數值。如果轉換失敗,它會返回錯誤信息。
示例:
import ( "fmt" "strconv" ) func main() { str := "42" num, err := strconv.Atoi(str) if err != nil { fmt.Println("轉換失敗:", err) return } fmt.Println(num) // 輸出: 42 }
-
strconv.ParseFloat:將字符串轉換為浮點數。接受一個表示浮點數的字符串、指定的位數(32 或 64)以及對應位數的浮點數類型,並返回對應的浮點數值。如果轉換失敗,它會返回錯誤信息。
示例:
import ( "fmt" "strconv" ) func main() { str := "3.14" num, err := strconv.ParseFloat(str, 64) if err != nil { fmt.Println("轉換失敗:", err) return } fmt.Println(num) // 輸出: 3.14 }
-
strconv.FormatInt / strconv.FormatFloat:將整數或浮點數轉換為字符串。接受一個整數或浮點數值,以及指定的基數(如 10 進制、16 進制等),並返回對應的字符串形式。
示例:
import ( "fmt" "strconv" ) func main() { num := 42 str := strconv.FormatInt(int64(num), 10) fmt.Println(str) // 輸出: "42" pi := 3.14159 str = strconv.FormatFloat(pi, 'f', 2, 64) fmt.Println(str) // 輸出: "3.14" }
這些只是 strconv 包提供的一些常用函數,它還提供了其他函數用於更複雜的轉換操作,比如處理布爾值、Unicode 字符等。
AppendXXX 簡要介紹#
AppendXXX
函數用於將基本類型的值追加到字節切片([]byte
)中。
-
AppendBool
函數func AppendBool(dst []byte, b bool) []byte
AppendBool
函數將布爾值b
轉換為字符串表示形式,並將結果追加到字節切片dst
中。返回值是追加後的字節切片。示例:
var dst []byte dst = strconv.AppendBool(dst, true) fmt.Println(string(dst)) // 輸出: "true"
-
AppendFloat
函數func AppendFloat(dst []byte, f float64, fmt byte, prec, bitSize int) []byte
AppendFloat
函數將浮點數f
轉換為字符串表示形式,並將結果追加到字節切片dst
中。fmt
參數指定格式,prec
參數指定精度,bitSize
參數指定浮點數位數。示例:
var dst []byte dst = strconv.AppendFloat(dst, 3.14159, 'f', 4, 64) fmt.Println(string(dst)) // 輸出: "3.1416"
請注意,這些 AppendXXX
函數用於將字符串形式的基本類型值追加到字節切片中,而不是在現有的字節切片中修改值。這些函數通常在需要將基本類型值轉換為字符串並將其添加到字節切片中的情況下使用。
QuoteXXX 簡要介紹#
QuoteXXX
函數是 strconv
包中的一組函數,用於將基本類型的值轉換為其在 Go 語言中的源代碼表示形式,並返回該表示形式的字符串。
以下是 QuoteXXX
函數的作用和示例:
-
Quote
函數func Quote(s string) string
Quote
函數將字符串s
轉換為它在 Go 語言中的源代碼表示形式,並返回該表示形式的字符串。它將特殊字符進行轉義,使字符串可以直接在源代碼中使用。示例用法:
str := `Hello, "Gopher"` quoted := strconv.Quote(str) fmt.Println(quoted) // 輸出: "Hello, \"Gopher\""
-
QuoteRune
函數func QuoteRune(r rune) string
QuoteRune
函數將 Unicode 字符r
轉換為它在 Go 語言中的源代碼表示形式,並返回該表示形式的字符串。示例用法:
rune := '♥' quoted := strconv.QuoteRune(rune) fmt.Println(quoted) // 輸出: "'♥'"
-
QuoteRuneToASCII
函數func QuoteRuneToASCII(r rune) string
QuoteRuneToASCII
函數將 Unicode 字符r
轉換為它在 Go 語言中的源代碼表示形式,並返回該表示形式的 ASCII 字符串。它將非 ASCII 字符進行轉義。示例用法:
rune := '♥' quoted := strconv.QuoteRuneToASCII(rune) fmt.Println(quoted) // 輸出: "'\\u2665'"
-
QuoteRuneToGraphic
函數func QuoteRuneToGraphic(r rune) string
QuoteRuneToGraphic
函數將 Unicode 字符r
轉換為它在 Go 語言中的源代碼表示形式,並返回該表示形式的可打印字符的字符串。它將非圖形字符進行轉義。示例用法:
rune := '\u2022' // 中文的"點"字符 quoted := strconv.QuoteRuneToGraphic(rune) fmt.Println(quoted) // 輸出: "'•'"
這些 QuoteXXX
函數可以用於生成源代碼字符串的表示形式,特別是在需要將字符串或字符嵌入到源代碼中時,可以確保它們的表示形式是正確的,並且不會導致語法錯誤。
總結#
strconv 包是 Go 標準庫中的一個包,用於進行字符串和基本數據類型之間的相互轉換。它提供了一系列的函數,包括將基本類型轉換為字符串的函數,以及將字符串轉換為基本類型的函數。
該包的常用函數和功能包括:
-
Parse 系列函數:用於將字符串解析為基本類型的值,例如
ParseBool
、ParseInt
、ParseFloat
等函數。 -
Format 系列函數:用於將基本類型的值格式化為字符串的表示形式,例如
FormatBool
、FormatInt
、FormatFloat
等函數。 -
Append 系列函數:用於將基本類型的值追加到字節切片中,例如
AppendBool
、AppendInt
、AppendFloat
等函數。 -
Quote 系列函數:用於將基本類型的值轉換為其在 Go 語言中的源代碼表示形式的字符串,例如
Quote
、QuoteRune
、QuoteRuneToASCII
等函數。 -
字符串轉換函數:包括
Atoi
、Itoa
、ParseUint
、FormatUint
等函數,用於處理字符串和整數類型之間的轉換。 -
字符串和浮點數類型之間的轉換:包括
Atof
、FormatFloat
、ParseFloat
等函數,用於處理字符串和浮點數類型之間的轉換。
strconv 包提供了靈活且簡便的方法來處理字符串和基本數據類型之間的轉換,使得我們可以方便地進行數據格式轉換和處理。