1. 程式人生 > >Go語言庫之strconv包(轉載自--http://blog.csdn.net/alvine008/article/details/51283189)

Go語言庫之strconv包(轉載自--http://blog.csdn.net/alvine008/article/details/51283189)

整型 print 特殊 imp size 無符號 this http 相差

golang strconv.ParseInt 是將字符串轉換為數字的函數

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

參數1 數字的字符串形式

參數2 數字字符串的進制 比如二進制 八進制 十進制 十六進制

參數3 返回結果的bit大小 也就是int8 int16 int32 int64

代碼:

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) //n對應byte8,err對應error 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") }

Go語言庫之strconv包(轉載自--http://blog.csdn.net/alvine008/article/details/51283189)