mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2024-11-28 09:09:07 +00:00
Update ch3-05-5.md
This commit is contained in:
parent
0649e2c5c9
commit
7b467b965d
@ -1,4 +1,42 @@
|
|||||||
### 3.5.5. 字符串和数字的转换
|
### 3.5.5. 字符串和数字的转换
|
||||||
|
|
||||||
TODO
|
|
||||||
|
除了字符串, 字符, 字节 之间的转换, 字符串和数值之间的转换也比较常见. 由 strconv 包提供这类转换功能.
|
||||||
|
|
||||||
|
将一个整数转为字符串, 一种方法是用 fmt.Sprintf; 另一个方法是用 strconv.Itoa(“整数到ASCII”):
|
||||||
|
|
||||||
|
```Go
|
||||||
|
x := 123
|
||||||
|
y := fmt.Sprintf("%d", x)
|
||||||
|
fmt.Println(y, strconv.Itoa(x)) // "123 123"
|
||||||
|
```
|
||||||
|
|
||||||
|
FormatInt和FormatUint可以用不同的进制来格式化数字:
|
||||||
|
|
||||||
|
```Go
|
||||||
|
fmt.Println(strconv.FormatInt(int64(x), 2)) // "1111011"
|
||||||
|
```
|
||||||
|
|
||||||
|
fmt.Printf 函数的 %b, %d, %u, 和 %x 等参数提供功能往往比strconv 包的 Format 函数方便很多, 特别是在需要包含附加信息的时候:
|
||||||
|
|
||||||
|
```Go
|
||||||
|
s := fmt.Sprintf("x=%b", x) // "x=1111011"
|
||||||
|
```
|
||||||
|
|
||||||
|
如果要将一个字符串解析为整数, 可以使用 strconv 包的 Atoi 或 ParseInt 函数, 还有用于解析无符号整数的 ParseUint 函数:
|
||||||
|
|
||||||
|
```Go
|
||||||
|
x, err := strconv.Atoi("123") // x is an int
|
||||||
|
y, err := strconv.ParseInt("123", 10, 64) // base 10, up to 64 bits
|
||||||
|
```
|
||||||
|
|
||||||
|
ParseInt 函数的第三个参数是用于指定整型数的大小; 例如16表示int16, 0则表示int. 在任何情况下, 返回的结果 y 总是 int64 类型, 你可以通过强制类型转换将它转为更小的整数类型.
|
||||||
|
|
||||||
|
有时候也会使用 fmt.Scanf 来解析输入的字符串和数字, 特别是当字符串和数字混合在一行的时候, 它可以灵活处理不完整或不规则的输入.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user