zoukankan      html  css  js  c++  java
  • go package 学习笔记 —— strconv(string与其他基本数据类型(int, float, bool)的转换)

    strconv实现了go中基本数据类型与string之间的转换。

    How to use in go

    go doc:https://godoc.org/strconv

    import "strconv"

    int ↔ string

    func Atoi(s string) (int, error)
    

      将string类型的s转换为十进制int类型,同时会返回error。

    func Itoa(i int) string
    

      将十进制i转换为string类型。

    // int ↔ string
    stringValue := "150"
    intValue, err := strconv.Atoi(stringValue)
    if err != nil {
    	fmt.Printf("Failed to conv string to int: %s
    ", err)
    } else {
    	fmt.Printf("%T %s conv to %T %d
    ", stringValue, stringValue, intValue, intValue) //string 150 conv to int 150
    }
    stringValue = strconv.Itoa(intValue)
    fmt.Printf("%T %d conv to %T %s
    ", intValue, intValue, stringValue, stringValue) //int 150 conv to string 150

    int64 ↔ string

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

      将string类型的s转换为base进制下bitSize比特的i,base的取值范围是{0}∪[2,36],bitSize的取值范围是[0,64]。当base=0时,字符串的前缀表示基数,比如“0x”表示十六进制,“0”表示八进制,其他表示十进制;当base=1 || base<0 || base>36,返回error。bitSize指定了整型的位数,bitSize=0,8,16,32和64分别对应了int,int8,int16,int32和int64。

    func FormatInt(i int64, base int) string
    

      将i转换为base进制下的string类型,base的的取值范围是[2,36]。

    // int64 ↔ string
    int64Value, err := strconv.ParseInt(stringValue, 10, 64)
    if err != nil {
    	fmt.Printf("Failed to conv string to int64: %s
    ", err)
    } else {
    	fmt.Printf("%T %s conv to %T %d
    ", stringValue, stringValue, int64Value, int64Value) //string 150 conv to int64 150
    }
    stringValue = strconv.FormatInt(int64Value, 10)
    fmt.Printf("%T %d conv to %T %s
    ", int64Value, int64Value, stringValue, stringValue) //int64 150 conv to string 150

    uint64 ↔ string

    func ParseUint(s string, base int, bitSize int) (uint64, error)
    

      ParseUint的用法与ParseInt相同,返回的结果是uint64类型。

    func FormatUint(i uint64, base int) string
    

      将uint64类型按照给定base转换为string类型,base的取值范围是[2,36]。

    // uint64 ↔ string
    uint64Value, err := strconv.ParseUint(stringValue, 10, 64)
    if err != nil {
    	fmt.Printf("Failed to conv string to uint64: %s
    ", err)
    } else {
    	fmt.Printf("%T %s conv to %T %d
    ", stringValue, stringValue, uint64Value, uint64Value) //string 150 conv to uint64 150
    }
    stringValue = strconv.FormatUint(uint64Value, 10)
    fmt.Printf("%T %d conv to %T %s
    ", uint64Value, uint64Value, stringValue, stringValue) //uint64 150 conv to string 150

    float64 ↔ string

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

      ParseFloat将字符串s转换为浮点数,精度由bitSize指定,bitSize=32转换为float32,64转换为float64。 当bitSize = 32时,结果仍然是float64类型,但不改变值就可以转换为float32。

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

      FormatFloat根据格式fmt和精度prec将浮点数f转换为字符串。

      格式fmt取值有几种,'b'表示二进制指数( - ddddp±ddd),'e'表示十进制指数( - d.dddde±dd),'E'表示十进制指数(- ddddd±dd),'f'表示无指数(- ddd.dddd),'g'表示对于大指数使用格式'e',否则使用'f','G'表示对于大指数使用格式'E',否则使用'f'。

      精度是由格式'e','E','f','g'和'G'控制。 对于'e','E'和'f',是小数点后的位数。 对于'g'和'G',是最大有效位数(删除末尾的零)。当prec=-1时,表示使用所需的最小位数。

    // float64 ↔ string
    float64Value,err:=strconv.ParseFloat("3.1415926535",64)
    if err !=nil{
    	fmt.Printf("Failed to conv string to float64: %s",err)
    }else{
    	fmt.Printf("%T %s conv to %T %v
    ","3.1415926535","3.1415926535",float64Value,float64Value) //string 3.1415926535 conv to float64 3.1415926535
    }
    stringValue=strconv.FormatFloat(float64Value,'E',-1,64)
    fmt.Printf("%T %v conv to %T %s
    ",float64Value,float64Value,stringValue,stringValue) //float64 3.1415926535 conv to string 3.1415926535E+00

    bool ↔ string

    func ParseBool(str string) (bool, error)
    

      返回string类型的str表示的bool值,str∈{1,t,T,TRUE,true,True,0,f,F,FALSE,false,False},如果str是其他值,函数返回error。

    func FormatBool(b bool) string
    

      根据b的值返回“true”或“false”。

    // bool ↔ string
    boolValue, err := strconv.ParseBool("true")
    if err != nil {
    	fmt.Printf("Failed to conv string to bool: %s
    ", err)
    } else {
    	fmt.Printf("%T %s conv to %T %v
    ", "true", "true", boolValue, boolValue) //string true conv to bool true
    }
    stringValue = strconv.FormatBool(boolValue)
    fmt.Printf("%T %v conv to %T %s
    ", boolValue, boolValue, stringValue, stringValue) //bool true conv to string true
  • 相关阅读:
    What version of .NET Framework is integrated into what version of OS?
    《千字文》古今第一文,1000字无重复,囊括各个方面的知识!
    这些习惯正在阻碍你的成长(你正在做。。。)
    百家讲坛另附笔记
    百家讲坛之曾国藩笔记
    《挪威的森林》经典语录
    《悲伤逆流成河》台词摘抄
    2018年11月29日,晴
    关于描述的一些感悟
    2018年11月27日, 晴
  • 原文地址:https://www.cnblogs.com/Moon-Light-Dream/p/10005288.html
Copyright © 2011-2022 走看看