1. 程式人生 > >go隨聊-strconv包

go隨聊-strconv包

Package strconv 

strconv是golang用來做資料型別轉換的一個庫

1.Append型別的方法

func AppendInt(dst []byte, i int64, base int) []byte

b1 := []byte("追加")
b1 = strconv.AppendInt(b1, -17, 10)	//17用10進位制方式加到後面
fmt.Println(string(b1))

b2 := []byte("追加")
b2 = strconv.AppendInt(b2, -17, 16) 	//17用16進位制方式加到後面
fmt.Println(string(b2))

$追加-17
$追加-11

func AppendFloat(dst []byte, f float64, fmt byte, prec, bitSize int) []byte

f := []byte("追加")
f = strconv.AppendFloat(f, 3.1415926535, 'f', -1, 64)
fmt.Println(string(f))

$追加3.1415926535

第三個引數fmt說明:

%b    無小數部分的,指數為二的冪的科學計數法,與 strconv.FormatFloat 的 'b' 轉換格式一致。例如 -123456p-78
%e    科學計數法,例如 -1234.456e+78
%E    科學計數法,例如 -1234.456E+78
%f    有小數點而無指數,例如 123.456
%g    根據情況選擇 %e 或 %f 以產生更緊湊的(無末尾的 0)輸出
%G    根據情況選擇 %E 或 %f 以產生更緊湊的(無末尾的 0)輸出

2.Format型別的方法

func FormatBool(b bool) string 

將布林值轉換為字串 true 或 false

str:=strconv.FormatBool(true)
fmt.Println(str)

$true

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

將浮點數 f 轉換為字串形式

f:要轉換的浮點數 
fmt:格式標記(b、e、E、f、g、G) 
prec:精度(數字部分的長度,不包括指數部分) 
bitSize:指定浮點型別(32:float32、64:float64),結果會據此進行舍入。

格式標記: 
‘b’ (-ddddp±ddd,二進位制指數) 
‘e’ (-d.dddde±dd,十進位制指數) 
‘E’ (-d.ddddE±dd,十進位制指數) 
‘f’ (-ddd.dddd,沒有指數) 
‘g’ (‘e’:大指數,’f’:其它情況) 
‘G’ (‘E’:大指數,’f’:其它情況)

str:=strconv.FormatFloat(1.234567891234,'f',10,64)
fmt.Println(str)

$1.2345678912

func FormatInt(i int64, base int) string
func FormatUint(i uint64, base int) string

將整數轉換為字串形式。base 表示轉換進位制,取值在 2 到 36 之間。

str:=strconv.FormatInt(1234567890123,10)
fmt.Println(str)

$1234567890123

3.Parse型別的方法 

func ParseBool(str string) (bool, error)

將字串轉換為布林值 
它接受真值:1, t, T, TRUE, true, True 
它接受假值:0, f, F, FALSE, false, False 
其它任何值都返回一個錯誤。

str,err:=strconv.ParseBool("true")
if err!=nil{
    fmt.Println("error:",err)
    return
}else{
    fmt.Println(str)
}

str,err=strconv.ParseBool("1")
if err!=nil{
    fmt.Println("error:",err)
    return
}else{
    fmt.Println(str)
}

$true
$true

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

將字串解析為浮點數,使用 IEEE754 規範進行舍入。 
bigSize 取值有 32 和 64 兩種,表示轉換結果的精度。 
如果有語法錯誤,則 err.Error = ErrSyntax 
如果結果超出範圍,則返回 ±Inf,err.Error = ErrRange

str,err:=strconv.ParseFloat("3.123456789",64)
if err!=nil{
    fmt.Println("error:",err)
    return
}else{
	fmt.Println(str)
}

$3.123456789

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

將字串解析為整數,ParseInt 支援正負號,ParseUint 不支援正負號。 
base 表示進位制(2 到 36),如果 base 為 0,則根據字串字首判斷, 
字首 0x 表示 16 進位制,字首 0 表示 8 進位制,否則是 10 進位制。 
bitSize 表示結果的位寬(包括符號位),0 表示最大位寬。

str,err:=strconv.ParseInt("123456789123456789",10,64)
if err!=nil{
	fmt.Println("error:",err)
	return
}else{
	fmt.Println(str)
}

$123456789123456789