溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

gonlang strconv的常用函數(shù)的用法

發(fā)布時間:2020-06-01 15:44:18 來源:億速云 閱讀:369 作者:鴿子 欄目:編程語言

1.strconv包

strconv包實現(xiàn)了基本數(shù)據(jù)類型與其字符串表示的轉換,主要有以下常用函數(shù):Atoi(),Itia(),parse系列,format系列,append系列。

1.1string與int類型轉換

1.1.1Atoi()

Atoi()函數(shù)用于將字符串類型的整數(shù)轉換為int類型
func Atoi(s string) (i int, err error)
如果傳入的字符串參數(shù)無法轉換為Int類型,就會返回錯誤。
package main

import (
    "fmt"
    "strconv"
)

func main() {
    s1 := "100"
    i1,err := strconv.Atoi(s1)
    if err != nil{
        fmt.Println("can not convert to int")
    }else{
        fmt.Printf("type:%T value:%#v\n",i1,i1)
    }
}

結果:
type:int value:100

Process finished with exit code 0

1.1.2Itoa()

Itoa()函數(shù)用于將int累心數(shù)據(jù)轉換為對應的字符串表示。
func Itoa(i int) string
package main

import (
    "fmt"
    "strconv"
)

func main() {
    i1 := 100
    s1 := strconv.Itoa(i1)
    fmt.Printf("type:%T value:%#v\n",s1,s1)
}

結果:
type:string value:"100"

Process finished with exit code 0
a的典故:
【擴展閱讀】這是C語言遺留下的典故。C語言中沒有string類型而是用字符數(shù)組(array)表示字符串,所以Itoa對很多C系的程序員很好理解。

1.2Parse系列函數(shù)

Parse系列函數(shù)用于轉換字符串為給定類型的值:ParseBool(),ParseFloat(),ParseInt(),ParseUint()。

1.2.1ParseBool()

func ParseBool(str string) (value bool, err error)
返回字符串表示的bool值。它接收1,0,t,f,T,F,true,True,False,TRUE,FALSE;否則返回錯誤。

1.2.2ParseInt()

func ParseInt(s string, base int, bitSize int) (i int64, err error)
返回字符串表示的整數(shù)值,接受正負號。
base:指定進制(2到36),如果base為0,則會從字符串前置判斷,"0x"是16進制,"0"是8進制,否則是10進制;
bitSize:指定結果必須能無溢出賦值的整數(shù)類型,0,8,16,32,64分別代表int,int8,int16,int32,int64;
err:是*NumErr類型的,如果語法有誤,err.Error=ErrSyntax;如果超出類型范圍err.Error=ErrRange。

1.2.3ParseUint()

func ParseUint(s string, base int, bitSize int) (n uint64, err error)
ParseUint類似ParseInt但不接受正負號,用于無符號整型。

1.2.4ParseFloat()

func ParseFloat(s string, bitSize int) (f float64, err error)
解析一個表示浮點數(shù)的字符串并返回其值。
如果s符合語法規(guī)則,函數(shù)會返回最為接近s表示值得一個浮點數(shù)(使用IEEE754規(guī)范舍入)。
bitSize:指定了期望的接收類型,32是float32(返回值可以不改變精確值的賦值給float32),64是float64;
err:是*NumErr類型的,語法有誤的,err.Error=ErrSyntax;結果超出表示范圍的,返回值f為±Inf,err.Error= ErrRange。

1.2.5示例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    b, _ := strconv.ParseBool("true")
    fmt.Println(b)
    f, _ := strconv.ParseFloat("3.1415", 64)
    fmt.Println(f)
    i, _ := strconv.ParseInt("-2", 10, 64)
    fmt.Println(i)
    u, _ := strconv.ParseUint("2", 10, 64)
    fmt.Println(u)
}

結果:
true
3.1415
-2
2

Process finished with exit code 0

1.3Format系列函數(shù)

Format系列函數(shù)實現(xiàn)了將給定類型數(shù)據(jù)格式化為string類型數(shù)據(jù)的功能。

1.3.1FormatBool()

func FormatBool(b bool) string
根據(jù)b的值返回”true”或”false”。

1.3.2FormatInt()

func FormatInt(i int64, base int) string
返回i的base進制的字符串表示。base 必須在2到36之間,結果中會使用小寫字母’a’到’z’表示大于10的數(shù)字。

1.3.3FormatUint()

func FormatUint(i uint64, base int) string
是FormatInt的無符號整數(shù)版本。

1.3.4FormatFloat()

func FormatFloat(f float64, fmt byte, prec, bitSize int) string
bitSize表示f的來源類型(32:float32、64:float64),會據(jù)此進行舍入。

fmt表示格式:’f’(-ddd.dddd)、’b’(-ddddp±ddd,指數(shù)為二進制)、’e’(-d.dddde±dd,十進制指數(shù))、’E’(-d.ddddE±dd,十進制指數(shù))、’g’(指數(shù)很大時用’e’格式,否則’f’格式)、’G’(指數(shù)很大時用’E’格式,否則’f’格式)。

prec控制精度(排除指數(shù)部分):對’f’、’e’、’E’,它表示小數(shù)點后的數(shù)字個數(shù);對’g’、’G’,它控制總的數(shù)字個數(shù)。如果prec 為-1,則代表使用最少數(shù)量的、但又必需的數(shù)字來表示f。

1.3.5示例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    s1 := strconv.FormatBool(true)
    s2 := strconv.FormatFloat(3.1415, 'E', -1, 64)
    s3 := strconv.FormatInt(-2, 16)
    s4 := strconv.FormatUint(2, 16)
    fmt.Printf("Type:%T value:%#v\n",s1,s1)
    fmt.Printf("Type:%T value:%#v\n",s2,s2)
    fmt.Printf("Type:%T value:%#v\n",s3,s3)
    fmt.Printf("Type:%T value:%#v\n",s4,s4)
}

結果:
Type:string value:"true"
Type:string value:"3.1415E+00"
Type:string value:"-2"
Type:string value:"2"

Process finished with exit code 0

1.4其他

1.4.1isPrint()

func IsPrint(r rune) bool
返回一個字符是否是可打印的,和unicode.IsPrint一樣,r必須是:字母(廣義)、數(shù)字、標點、符號、ASCII空格。

1.4.2CanBackquote()

func CanBackquote(s string) bool
返回字符串s是否可以不被修改的表示為一個單行的、沒有空格和tab之外控制字符的反引號字符串。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI