# 数据类型转换

# 字符串和整型之间的转换

# 字符串转为整型

# ParseInt跟ParseUint

参数1:数字的字符串形式

参数2:数字字符串的进制 比如二进制 八进制 十进制 十六进制

参数3:返回结果的bit大小 也就是int8 int16 int32 int64

func ParseInt(s string, base int, bitSize int) (i int64, err error) // 转成int类型
func ParseUint(s string, base int, bitSize int) (n uint64, err error) // 转成uint类型

实例

package main

import (
	"fmt"
	"strconv"
)

func main() {
	s := "1"
	s1, s1err := strconv.ParseInt(s, 10, 64)
	if s1err == nil {
		fmt.Println(s1err)
	}
	fmt.Println(s1)

	s2, s2err := strconv.ParseUint(s, 10, 64)
	if s2err == nil {
		fmt.Println(s2err)
	}
	fmt.Println(s2)
}


结果:
<nil>
1
<nil>
1

# Atoi - 常用

Atoi 是 ParseInt 的便捷版,内部通过调用 ParseInt(s, 10, 0)

func Atoi(s string) (i int, err error)

实例

package main

import (
	"fmt"
	"strconv"
)

func main() {
	s := "1"
	fmt.Println(strconv.Atoi(s))
}

// 结果:
1 <nil>

# 整型转为字符串

# FormatInt跟FormatUint

func FormatUint(i uint64, base int) string    // 无符号整型转字符串
func FormatInt(i int64, base int) string    // 有符号整型转字符串

实例

package main

import (
	"fmt"
	"strconv"
)

func main() {
	s := int64(1)
	fmt.Println(strconv.FormatInt(s, 10))

	s1 := uint64(1)
	fmt.Println(strconv.FormatUint(s1, 10))
}

// 结果:
1
1

# Itoa - 常用

Itoa 内部直接调用 FormatInt(i, 10) 实现的

func Itoa(i int) string

实例

package main

import (
	"fmt"
	"strconv"
)

func main() {
	s := 1
	fmt.Println(strconv.Itoa(s))
}

// 结果:
1

# 字符串和布尔值之间的转换

# 字符串转为布尔值

// 接受 1, t, T, TRUE, true, True, 0, f, F, FALSE, false, False 等字符串;
// 其他形式的字符串会返回错误
func ParseBool(str string) (value bool, err error)

实例

package main

import (
	"fmt"
	"strconv"
)

func main() {
	s := "1"
	s1, err := strconv.ParseBool(s)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(s1)
}


// 结果:
true

# 布尔值转为字符串

// 直接返回 "true" 或 "false"
func FormatBool(b bool) string

实例

package main

import (
	"fmt"
	"strconv"
)

func main() {
	s := false
	fmt.Println(strconv.FormatBool(s))
}

// 结果:
false

# AppendBool

// 将 "true" 或 "false" append 到 dst 中
// 这里用了一个 append 函数对于字符串的特殊形式:append(dst, "true"...)
func AppendBool(dst []byte, b bool)

# 字符串和浮点数之间的转换

# 字符串转为浮点数

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

实例

package main

import (
	"fmt"
	"strconv"
)

func main() {
	s := "1.1"
	s1, err := strconv.ParseFloat(s, 10)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(s1)
}



// 结果:
1.1

# 浮点数转为字符串

参数:

1. f:浮点数类型
2. fmt:表示格式:'f'(-ddd.dddd)、'b'(-ddddp±ddd,指数为二进制)、'e'(-d.dddde±dd,十进制指数)、'E'(-d.ddddE±dd,十进制指数)、'g'(指数很大时用'e'格式,否则'f'格式)、'G'(指数很大时用'E'格式,否则'f'格式),一般用 f
3. prec:控制精度(排除指数部分),简单来说,就是保留位数
4. bistsize:返回结果的bit大小 也就是float8 float16 float32 float64
func FormatFloat(f float64, fmt byte, prec, bitSize int) string

实例

package main

import (
	"fmt"
	"strconv"
)

func main() {
	s := 1.14
	fmt.Println(strconv.FormatFloat(s, 'f', 6, 64))
}


// 结果:
1.140000

# AppendFloat

func AppendFloat(dst []byte, f float64, fmt byte, prec int, bitSize int)