基本数据类型和string的转换
在程序开发中,我们经常将数据类型转成string或者string转成基本数据类型

基本类型转string类型

1、 fmt.Sprintf("%参数", 表达式) 【灵活】
函数介绍:
func Sprintf(format string, a …interface{}) string
// Sprintf根据format参数生成格式化的字符串并返回该字符串
参数需要和表达式的数据类型想匹配
fmt.Sprintf()… 会返回转换后的字符串

2、使用strconv 包的函数

1
2
3
4
func FormatBool(b bool) string
func FormatFloat64(f float64,fmt byte,prec,bitSize int) string
func FormatInt(i int64,base int) string
func FormatUnit(i unit64,base int) string
  • 案例演示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package main

import (
    "fmt"
    "strconv"
)

func main() {<!-- -->
    var num1 int = 99
    var num2 float64 = 23.456
    var b bool = true
    var myChar byte = 'h'
    var str string //空的string

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

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

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

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

    str = fmt.Sprintf("%c", myChar)
    fmt.Printf("str type %T str=%q\n", str, str)

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

    str = strconv.FormatInt(int64(num3), 10)
    fmt.Printf("str type %T str=%q\n", str, str)

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

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

    str = strconv.Itoa(int(num5))
    fmt.Printf("str type %T str=%q\n", str, str)

}

string 类型转基本类型

1
2
3
4
5
使用时 strconv 包的函数
func ParseBool(str string)(value bool, err error)
func ParseFloat(s string, bitSize int)(i int64, err error)
func ParseInt(s string, base int, bitSize)(i int64, err error)
func ParseUnint(s string, b int, bitSize int)(n unit64 err error)
  • 案例演示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
func main() {<!-- -->

    var str string = "true"
    var b bool
    // b, _ = strconv.ParseBool(str)
    // 说明:
    // 1、strconv.ParseBool(str) 函数会返回两个值 (value bool, err error)
    // 2、因为我只想获取到 value bool ,不想获取 err 所以我使用——忽略
    b, _ = strconv.ParseBool(str)
    fmt.Printf("b type %T b=%v\n", 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\n", n1, n1)
    fmt.Printf("n2 type %T n2=%v\n", n2, n2)

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

}

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

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

1
2
3
4
var str4 string = "hello"
var n3 int64 = 11
n3, _ = strconv.ParseInt(str4, 10, 64)
fmt.Printf("n3 type %T n3=%v\n", n3, n3)