go 数据类型及其使用

2,442 阅读2分钟

整型

int8 int16 int32 int64 int
-2^7~2^7-1 -2^15~2^15-1 -2^31~2^31-1 -2^63~2^63-1 依计算机平台定int32或者int64
-128-127 -32768~32767 -2147483648-2147483647 -9223372036854775808~9223372036854775807
uint8 uint16 uint32 uint64 uint
0-2^8-1 0~2^16-1 0~2^32-1 0~2^64-1 依计算机平台定uint32或者uint64
0~255 0~65535 0~4294967295 0~18446744073709551615

go 语言没有乘方的运算符

  • 方法1
	x := 2.0
	y := 8.0
	fmt.Println(math.Pow(x, y))
  • 方法2

只适用2的乘方

	var i uint8 = 1
	fmt.Println(i<<8)

浮点型

  1. float32
  2. float64

go语言浮点数实现IEEE754规格的浮点数,尽量使用float64来运算,float32容易误差扩散.

布尔型

bool | boolean

  • 布尔型整型互转

func Btoi(b bool) int {
	if b {
		return 1
	}
	return 0
}

func Itob(i int) bool {
	return i == 1
}

字符型

  1. int 与 string 互转
i, err := strconv.Atoi("12")
s, err := strconv.Itoa(12)
  1. 字符型转化为有符号整数
ageint, _ := strconv.ParseInt(age, 16, 8)
  • 函数原型 func ParseInt(s string, base int, bitSize int) (i int64, err error)
    base 取值范围 (0, 2 to 36)
    base 取值为0 表示将按字符串的前缀解析 如 "017 "按8进制 "0x1f"按16进制解析
    base 取值为8 表示按8进制解析
    bitSize 取值范围 (0-64)表示解析后整型所占的bit位的个数
  1. 字符型转化为无符号整数
strconv.ParseUint("98", 10, 8)
  1. 字符型转化为浮点数
f,err := strconv.ParseFloat("1.5", 32) 
f,err := strconv.ParseFloat("1.5", 64)//建议使用
// 最后一个参数32就转化用float32位转化
// 非32就用float64转化
  1. 字符型转化为布尔型
b, err := strconv.ParseBool("true")
if err != nil{
    // 错误处理
}
  • 其他类型转化为字符 方法1
	fmt.Printf("%s:%[1]T\n", fmt.Sprintf("%t", true))
	fmt.Printf("%s:%[1]T\n", fmt.Sprintf("%d", 17))
	fmt.Printf("%s:%[1]T\n", fmt.Sprintf("%.2f", 17.777))

方法2

	fmt.Printf("%s:%[1]T\n", strconv.FormatBool(true))
	fmt.Printf("%s:%[1]T\n", strconv.FormatInt(17, 8))
	fmt.Printf("%s:%[1]T\n", strconv.FormatFloat(17, byte('f'), 0, 64))