2015-12-17 05:13:42 +00:00
|
|
|
### 3.5.5. 字符串和數字的轉換
|
2015-12-16 06:03:43 +00:00
|
|
|
|
2015-12-17 01:42:14 +00:00
|
|
|
|
2015-12-17 05:13:42 +00:00
|
|
|
除了字符串, 字符, 字節 之間的轉換, 字符串和數值之間的轉換也比較常見. 由 strconv 包提供這類轉換功能.
|
2015-12-17 01:42:14 +00:00
|
|
|
|
2015-12-17 05:13:42 +00:00
|
|
|
將一箇整數轉為字符串, 一種方法是用 fmt.Sprintf; 另一箇方法是用 strconv.Itoa(“整數到ASCII”):
|
2015-12-17 01:42:14 +00:00
|
|
|
|
|
|
|
```Go
|
|
|
|
x := 123
|
|
|
|
y := fmt.Sprintf("%d", x)
|
|
|
|
fmt.Println(y, strconv.Itoa(x)) // "123 123"
|
|
|
|
```
|
|
|
|
|
2015-12-17 05:13:42 +00:00
|
|
|
FormatInt和FormatUint可以用不衕的進製來格式化數字:
|
2015-12-17 01:42:14 +00:00
|
|
|
|
|
|
|
```Go
|
|
|
|
fmt.Println(strconv.FormatInt(int64(x), 2)) // "1111011"
|
|
|
|
```
|
|
|
|
|
2015-12-17 05:13:42 +00:00
|
|
|
fmt.Printf 函數的 %b, %d, %u, 和 %x 等參數提供功能往往比strconv 包的 Format 函數方便很多, 特彆是在需要包含附加信息的時候:
|
2015-12-17 01:42:14 +00:00
|
|
|
|
|
|
|
```Go
|
|
|
|
s := fmt.Sprintf("x=%b", x) // "x=1111011"
|
|
|
|
```
|
|
|
|
|
2015-12-17 05:13:42 +00:00
|
|
|
如果要將一箇字符串解析為整數, 可以使用 strconv 包的 Atoi 或 ParseInt 函數, 還有用於解析無符號整數的 ParseUint 函數:
|
2015-12-17 01:42:14 +00:00
|
|
|
|
|
|
|
```Go
|
|
|
|
x, err := strconv.Atoi("123") // x is an int
|
|
|
|
y, err := strconv.ParseInt("123", 10, 64) // base 10, up to 64 bits
|
|
|
|
```
|
|
|
|
|
2015-12-17 05:13:42 +00:00
|
|
|
ParseInt 函數的第三箇參數是用於指定整型數的大小; 例如16錶示int16, 0則錶示int. 在任何情況下, 返迴的結果 y 總是 int64 類型, 你可以通過強製類型轉換將它轉為更小的整數類型.
|
2015-12-17 01:42:14 +00:00
|
|
|
|
2015-12-17 05:13:42 +00:00
|
|
|
有時候也會使用 fmt.Scanf 來解析輸入的字符串和數字, 特彆是噹字符串和數字混閤在一行的時候, 它可以靈活處理不完整或不規則的輸入.
|
2015-12-17 01:42:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 06:03:43 +00:00
|
|
|
|