1. 基本类型转 string 类型

把基本类型转换为string有2种方式。

  1. 使用fmt包的Sprintf 函数。函数签名:func Sprintf(format string, a ...interface{}) string 。文档:http://docscn.studygolang.com/pkg/fmt/#Sprint

  2. 使用 strconv 包的函数。文档:http://docscn.studygolang.com/pkg/strconv/

1.1. Sprintf 方式。

Sprintf 的例子1:int转string。

package main

import "fmt"

func main()  {
    var num1 int = 99
    str := fmt.Sprintf("%d",num1)
    //输出: str 的类型是 string ,str的值是 99
    fmt.Printf("str 的类型是 %T ,str的值是 %v",str,str)
}

Sprintf 的例子2:float64 、bool、字符转string。

package main

import "fmt"

func main()  {
    var num2 float64 = 230000000.980
    str := fmt.Sprintf("%f",num2)
    //输出:str 的类型是 string ,str的值是 23.98
    //%v 占位符表示表示输出变量值
    fmt.Printf("str 的类型是 %T ,str的值是 %v \n",str,str)

    var b bool  = true
    str = fmt.Sprintf("%t",b)
    //输出:str 的类型是 string ,str的值是 "true"
    //%q 占位符表示输出变量值,并且用引号包裹。
    fmt.Printf("str 的类型是 %T ,str的值是 %q \n",str,str)

    var myChar int  = 'a'
    //%c 占位符表示变量的值对应的Unicode字符
    str = fmt.Sprintf("%c",myChar)
    //str 的类型是 string ,str的值是 "a"
    fmt.Printf("str 的类型是 %T ,str的值是 %q \n",str,str)
}

总结:实际上就是fmt包的各种占位符的用法。具体参考文档。

1.2. strconv方式。

这种方式是使用strconv包的几个format函数。如下:

func FormatBool(b bool) string

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

func FormatInt(i int64, base int) string

func FormatUint(i uint64, base int) string

func Itoa(i int) string

例子如下:

package main

import (
    "fmt"
    "strconv"
)

func main()  {

    str := strconv.FormatBool(true)
    //输出:str 的类型是 string ,str的值是 "true"
    fmt.Printf("str 的类型是 %T ,str的值是 %q \n",str,str)

    //把100,以10进制转换为字符串
    str = strconv.FormatInt(100,10)
    //输出:str 的类型是 string ,str的值是 "100"
    fmt.Printf("str 的类型是 %T ,str的值是 %q \n",str,str)

    //把23.189 ,以f的格式。保留5位小数,64表示原来的值23.189是float64
    str = strconv.FormatFloat(23.189,'f',5,64)
    //输出:str 的类型是 string ,str的值是 "23.18900"
    fmt.Printf("str 的类型是 %T ,str的值是 %q \n",str,str)
}

2. string类型转基本类型。

2.1. 使用strconv包的函数。

使用的函数下面4个函数:

func ParseBool(str string) (value bool, err error)

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

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

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

例子如下:注意bitSize参数,表示把字符串转移到数字的时候。数据的精度

package main

import (
    "fmt"
    "strconv"
)
//strconv.Parsexxx 返回2个值。用下划线忽略返回的第二个值error
func main()  {
    b, _ := strconv.ParseBool("true")
    fmt.Printf("b值是%v \n",b)//输出:b值是true

    //把10进制的“123”字符串,转换为int64类型
    //base参数表示以什么进制的方式去解析给定的字符串,则字符串的前缀暗示基数:base 16表示“0x”,base 8表示“0”,否则表示10
    //bitSize表示转换为多少位的int:0,8,16,32和64对应于int,int8,int16,int32和int64。
    num, _ := strconv.ParseInt("123",10,64)
    fmt.Printf("num值是%v \n",num)//num值是123


    //把字符串转换为浮点数,其精度由bitSize指定:64为float64
    f, _ := strconv.ParseFloat("123.897",64)
    fmt.Printf("f值是%v \n",f)//f值是123.897
}

2.2. string 转基本数据类型的注意事项

在将 String 类型转成 基本数据类型时,要确保 String 类型能够转成有效的数据,比如: 我们可以把 "123" , 转成一个整数,但是不能把 "hello" 转成一个整数,如果这样做,Golang 直接将其转成 0就是没转成功就设置为返回的数据类型的默认值。float => 0 bool => false

例子如下:

num, _ := strconv.ParseInt("hello",10,64)
fmt.Printf("num值是%v ",num)//num值是0

results matching ""

    No results matching ""