• 基本数据类型和string类型的转换


    基本数据类型转string类型:

    方式1:fmt.Sprintf("%参数", 表达式) 【个人习惯这个,灵活】

    函数的介绍:

      func Sprintf

        func Sprintf(format string, a ...interface{}) string
        Sprintf根据format参数生成格式化的字符串并返回该字符串

    1)参数需要和表达式的数据类型相匹配
    2)fmt.Sprintf().. 会返回转换后的字符串
    3)案例演示
    [root@node3 shangxuetang]# cat basictype2string.go
    package main

    import (
    "fmt"
    _ "unsafe"
    )

    //演示golang中基本数据练习转成string使用
    func main() {

      var num1 int = 99
      var num2 float64 = 23.456
      var b bool = true
      var mychar byte = 'h'
      var str string //空的str

      //使用第一种方式来转换 fmt.Sprintf方法

      str = fmt.Sprintf("%d", num1)
      fmt.Printf("str type %T str=%q ", str, str)

      str = fmt.Sprintf("%f", num2)
      fmt.Printf("str type %T str=%q ", str, str)

      str = fmt.Sprintf("%t", b)
      fmt.Printf("str type %T str=%q ", str, str)

      str = fmt.Sprintf("%c", mychar)
      fmt.Printf("str type %T str=%q ", str, str)
    }

    输出的结果:

    [root@node3 shangxuetang]# go run basictype2string.go
    str type string str="99"
    str type string str="23.456000"
    str type string str="true"
    str type string str="h"

    方式2:使用strconv包的函数

    函数介绍:
      func FormatBool(b bool) string

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

      func FormatInt(i int64, base int) string
      返回i的base进制的字符串表示。base必须在2到36之间,结果中会使用小写字母'a'到'z'表示大于10的数字。

      func FormatUint(i uint64, base int) string

    案例说明:

    [root@node3 shangxuetang]# cat basictype2string2.go
    package main

    import (
    "fmt"
    "strconv"
    )

    func main() {

      //第二种方式 strconv 函数
      var num3 int = 99
      var num4 float64 = 23.456
      var b2 bool = true
      var str string

      str = strconv.FormatInt(int64(num3), 10) //这里的10,表示转成10进制
      fmt.Printf("str type %T str=%q ", str, str)

      //str = strconv.FormatFloat(num4, 'f', 10, 64)
      //说明:'f' 格式 10:表示小数位保留10位 64 :表示这个小数是float64
      str = strconv.FormatFloat(num4, 'f', 10, 64)
      fmt.Printf("str type %T str=%q ", str, str)

      str = strconv.FormatBool(b2)
      fmt.Printf("str type %T str=%q ", str, str)

    }

    [root@node3 shangxuetang]# go run basictype2string2.go
    str type string str="99"
    str type string str="23.4560000000"
    str type string str="true"

      //stroconv包中有一个函数Itoa,只能转换int类型的
      //int类型转换string
      var num5 int = 4567
      str = strconv.Itoa(num5)
      fmt.Printf("str type %T str=%q ", str, str)

      //int64类型是不能转换的,必须先转换成int以后才能转换成字符串
      var num6 = 4567
      str = strconv.Itoa(int(num6)) //先把int64转换成了int类型,然后在转换成string类型。
      fmt.Printf("str type %T str=%q ", str, str)

    string类型转换基本数据类型

    1)使用strconv包的函数
      func ParseBool(str string) (value bool, err error)
      func ParseFloat(s string, bitSize int) (f float64, err error) //base int是选择几进制的,10进制的就写10就可以
      func ParseInt(s string, base int, bitSize int) (i int64, err error)
      func ParseUint(s string, b int, bigSize int) (n uint64, err error)

      note:因为返回的是int64 或者 float64,如果希望要得到int32,float32等如下处理。
      //如果希望将str-->int32的可以这样处理
      var num5 int32
      num5 = int32(num)


    2) 案例演示
    [root@node3 shangxuetang]# cat stringtobasictype.go
    package main

    import (
    "fmt"
    "strconv"
    )

    //演示golang中string类型转成基本数据类型
    func main() {

      var str string = "true" //如果这里不是字符串true而是字符串hello的话,运行以后的结果就是false了。
      var b bool //如果这里把b = true的话,运行结果也还是false,说明这里就算是设定了类型也改不了上面的默认值。

      //说明
      //1. strconv.ParseBool(str) 函数会返回两个值(value bool, err error)
      //2. 因为我只想获取到 value bool, 不想获取 err 所以使用 _
      b, _ = strconv.ParseBool(str)
      fmt.Printf("b type %T b=%v ", b, b)

      var str2 string = "1234590"
      var n1 int64
      var n2 int
      n1, _ = strconv.ParseInt(str2, 10, 64)
      n2 = int(n1)
      fmt.Printf("n1 type %T n1=%v ", n1, n1)
      fmt.Printf("n1 type %T n2=%v ", n2, n2)

      var str3 string = "123.456"
      var f1 float64
      f1, _ = strconv.ParseFloat(str3, 64)
      fmt.Printf("n1 type %T f1=%v ", f1, f1)
    }


    [root@node3 shangxuetang]# go run stringtobasictype.go
    b type bool b=true
    n1 type int64 n1=1234590
    n1 type int n2=1234590
    n1 type float64 f1=123.456


    注意事项:

      在将string类型转成基本数据类型时,要确保string类型能够转成有效的数据,比如我们可以把“123”,转成一个整数,但是不能把“hello” 转成一个整数,如果这样做,golang直接将其转成0。其他类型也是一样的道理,float =》0, bool=》false。

    var str4 string = "hello"
    var n3 int64 = 11
    n3 , _ = strconv.ParseInt(str4, 10, 64)
    fmt.Printf("n3 type %T n3=%v ", n3, n3) //n3 = 0 //默认值

  • 相关阅读:
    信息系统开发平台OpenExpressApp - 支持列表分组(Group)
    WPF - 轻量级的开源XAML编辑器Kaxaml
    工作流 - 架构描述
    工作流 - 技术备忘录
    开源 - 轻型的表达式引擎 Flee
    敏捷实践(收集)
    人生就是......
    信息系统开发平台OpenExpressApp - 应用模型ApplicationModel
    软件观点 - 平台分类:系统平台、开发平台和开放平台
    软件产品线工程方法 - BAPO之架构(Architecture)
  • 原文地址:https://www.cnblogs.com/green-frog-2019/p/11337513.html
Copyright © 2020-2023  润新知