1. 程式人生 > >九、Go語言庫之strconv包--GO語言筆記

九、Go語言庫之strconv包--GO語言筆記

package main

import "fmt"
import "strconv"

func main() {
    /*
            由於將字串轉為其他資料型別可能會出錯,strconv 包定義了兩個 error 型別的變數:ErrRange 和 ErrSyntax。
            其中,ErrRange 表示值超過了型別能表示的最大範圍,比如將 "128" 轉為 int8 就會返回這個錯誤;ErrSyntax 表示語法錯誤,比如將 "" 轉為 int 型別會返回這個錯誤。
        func syntaxError(fn, str string) *NumError {
            return
&NumError{fn, str, ErrSyntax} } func rangeError(fn, str string) *NumError { return &NumError{fn, str, ErrRange} } */ /* 字串轉為整數 func ParseInt(s string, base int, bitSize int) (i int64, err error) func ParseUint(s string, base int, bitSize int) (n uint64, err error
) func Atoi(s string) (i int, err error) */ n, err := strconv.ParseInt("128", 10, 8) if err != nil { fmt.Println(err) } fmt.Println(strconv.ParseInt("134", 10, 64)) /* func FormatUint(i uint64, base int) string // 無符號整型轉字串 func FormatInt(i int64, base int) string
// 有符號整型轉字串 func Itoa(i int) string */ //還可以用 fmt.Sprintf("%d",i) 來轉化 ,但是我們分別迴圈轉換了10000次。Sprintf 的時間是 3.549761ms,而 Itoa 的時間是 848.208us,相差 4 倍多。 /* 字串和布林值之間的轉換 // 接受 1, t, T, TRUE, true, True, 0, f, F, FALSE, false, False 等字串; // 其他形式的字串會返回錯誤\ func ParseBool(str string) (value bool, err error) // 直接返回 "true""false" func FormatBool(b bool) string // 將 "true""false" append 到 dst 中 // 這裡用了一個 append 函式對於字串的特殊形式:append(dst, "true"...) func AppendBool(dst []byte, b bool) */ /* 字串和浮點數之間的轉換 func ParseFloat(s string, bitSize int) (f float64, err error) func FormatFloat(f float64, fmt byte, prec, bitSize int) string func AppendFloat(dst []byte, f float64, fmt byte, prec int, bitSize int) */ strconv.FormatFloat(1223.13252, 'e', 3, 32) // 結果:1.223e+03 strconv.FormatFloat(1223.13252, 'g', 3, 32) // 結果:1.22e+03 //由於浮點數有精度的問題,精度不一樣,ParseFloat 和 FormatFloat 可能達不到互逆的效果。如: s := strconv.FormatFloat(1234.5678, 'g', 6, 64) strconv.ParseFloat(s, 64) //如果要輸出這樣一句話:This is "studygolang.com" website. 該如何做? fmt.Println(`This is "studygolang.com" website`) fmt.Println("This is", strconv.Quote("studygolang.com"), "website") }