九、Go語言庫之strconv包--GO語言筆記
阿新 • • 發佈:2019-01-07
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")
}