使用fmt.Sscanf函數從字串中讀取格式化的資料並賦值給多個變數
在Go語言中,fmt.Sscanf函數可以幫助我們從字串中按照指定的格式讀取數據,並將讀取到的數據賦值給相應的變數。這為處理字串資料提供了很大的便利性。本文將介紹如何使用fmt.Sscanf函數,並提供一些範例程式碼,幫助讀者更好地理解。
首先,我們來看看fmt.Sscanf函數的基本用法。函數的定義如下:
func Sscanf(str string, format string, a ...interface{}) (n int, err error)
在這個函數中, str是要解析的字串, format是指定的格式, a是要傳入的變數。此函數傳回成功解析的參數數目n和解析過程中的錯誤err。
現在假設我們有如下的字串: "Tom 20 180.12",我們想要從中提取名字、年齡和身高,並分別賦值給對應的變數。程式碼如下所示:
package main import ( "fmt" ) func main() { str := "Tom 20 180.12" var name string var age int var height float64 n, err := fmt.Sscanf(str, "%s %d %f", &name, &age, &height) if err != nil { fmt.Printf("解析错误:%v ", err) } fmt.Printf("成功解析的参数数目:%d ", n) fmt.Printf("姓名:%s ", name) fmt.Printf("年龄:%d ", age) fmt.Printf("身高:%.2f ", height) }
運行結果如下:
成功解析的参数数目:3 姓名:Tom 年龄:20 身高:180.12
程式碼中,我們透過指定的格式字串"%s %d %f",將第一個字串讀入name變量,將第二個整數讀入age變量,將第三個浮點數讀入height變數。透過fmt.Printf函數,我們可以列印出對應的結果。
如果我們想要提取更複雜的數據,例如日期等,我們可以使用一些特殊的字元。以下是一些常用的格式字元:
程式碼範例:
package main import ( "fmt" ) func main() { str := "2022-06-30" var year, month, day int n, err := fmt.Sscanf(str, "%d-%d-%d", &year, &month, &day) if err != nil { fmt.Printf("解析错误:%v ", err) } fmt.Printf("成功解析的参数数目:%d ", n) fmt.Printf("年:%d ", year) fmt.Printf("月:%d ", month) fmt.Printf("日:%d ", day) }
運行結果如下:
成功解析的参数数目:3 年:2022 月:6 日:30
透過使用fmt.Sscanf函數,我們可以輕鬆地從字串中讀取取格式化的資料並將其賦值給多個變數。這樣的功能對於處理字串資料非常有用,可以避免手動解析字串的麻煩。同時,使用指定的格式控製字串,我們還可以更靈活地提取出所需的資料。希望本文的範例程式碼可以幫助讀者更好地理解和使用該函數。
以上是使用fmt.Sscanf函數從字串中讀取格式化的資料並賦值給多個變量的詳細內容。更多資訊請關注PHP中文網其他相關文章!