Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Golang 的 strconv 包的使用 #97

Open
huruji opened this issue Feb 27, 2021 · 0 comments
Open

Golang 的 strconv 包的使用 #97

huruji opened this issue Feb 27, 2021 · 0 comments

Comments

@huruji
Copy link
Owner

huruji commented Feb 27, 2021

strconv 包是 go 中做类型转换的包,可以做各种类型与字符串类型的转换。

布尔值和字符串的转换

使用 FormatBool 将布尔值转化为字符串

true 转化为字符串 true,false 转化为字符串 false

package main

import (
   "fmt"
   "strconv"
)

func main() {
   t := true
   f := false
   fmt.Println(strconv.FormatBool(t))
   fmt.Println(strconv.FormatBool(f))
}

使用 ParseBool 将字符串转化为布尔值

对字符串 1,t, T, TRUE, true, True 六种值转化为布尔值 true,对字符串 0,f,F, False,false,FALSE 六种值转化为布尔值 false,其他值都会返回一个错误

package main

import (
"fmt"
"strconv"
)

func main() {
   fmt.Println(strconv.ParseBool("1"))
   fmt.Println(strconv.ParseBool("t"))
   fmt.Println(strconv.ParseBool("T"))
   fmt.Println(strconv.ParseBool("TRUE"))
   fmt.Println(strconv.ParseBool("True"))
   fmt.Println(strconv.ParseBool("true"))
   fmt.Println(strconv.ParseBool("TrUe"))
}

整数和字符串的转换

将数字转化为字符串

FotmatInt 方法有两个参数

func FormatInt(i int64, base int) string

第二个为基数。

package main

import (
"fmt"
"strconv"
)

func main() {
   v := int64(12)
   fmt.Println(strconv.FormatInt(v, 10))
   fmt.Println(strconv.FormatInt(v, 12))
}

除此之外,还有将无符号的整数转化为字符串的 FormatUnit 方法,同时为了方便常用的 10 进制转换,提供了 Itoa 方法
package main

import (
"fmt"
"strconv"
)

func main() {
v := int64(98)
fmt.Println(strconv.Itoa(98))
// 等价于
fmt.Println(strconv.FormatInt(v, 10))
}

将字符串转化为数字

ParseInt 有三个参数:

func ParseInt(s string, base int, bitSize int) (i int64, err error)

base 表示进位制(2 到 36),如果 base 为 0,则根据字符串前缀判断(前缀:0x表示16进制;0表示8进制;否则是10 进制),即按照什么进制,来解析给定的整数字符串;参数bitSize 表示的是整数取值范围,或者说整数的具体类型。取值 0、8、16、32 和 64 分别代表 int、int8、int16、int32 和 int64。

如果字符串中包含不是数字,则会转换失败返回一个错误:

package main

import (
"fmt"
"strconv"
)

func main() {
   v := "989898"
   v2 := "9898abc"
   fmt.Println(strconv.ParseInt(v, 10, 32))
   fmt.Println(strconv.ParseInt(v2, 10, 32))
}

除此之外,还有将字符串转化为无符号的整数的 ParseUnit 方法,同时为了方便常用的 10 进制转换,提供了 Atoi 方法

package main

import (
"fmt"
"strconv"
)

func main() {
   v := "98"
   fmt.Println(strconv.Atoi(v))
   // 等价于
   fmt.Println(strconv.ParseInt(v, 10, 0))
}

浮点数和字符串的转化

将浮点数转化为字符串

func FormatFloat(f float64, fmt byte, prec, bitSize int) string

f 为需要转换的 float64 类型的变量,fmt 表示使用 f 表示不使用指数的形式,prec 表示保留几位小数,bitSize 如果为 32,表示是 float32 类型,如果是 64,表示是 float64 类型。

package main
import (
   "strconv"
   "fmt"
)


func main() {
   var num float64 = 3.24
   fmt.Println(strconv.FormatFloat(num, 'f', 10, 64 ))
}

将字符串转化为浮点数

使用 ParseFloat

func ParseFloat(s string, bitSize int) (float64, error)

其中 bitSize 表示转化为 float32 还是 float64:

package main

import (
   "fmt"
   "strconv"
)

func main() {
   var s = "3.24"
   fmt.Println(strconv.ParseFloat(s, 64))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant