GoLang 基础数据类型

基础数据类型

  • 基本类型:booleannumericstring
  • 复合类型:arraystruct,指针,functioninterfaceslicemapchannel类型。

Int

数据类型 取值范围
uint8 0 ~ 255
uint16 0 ~ 65535
uint32 0 ~ 4294967295
uint64 0 ~ 18446744073709551615
int8 -128 ~ 127
int16 -32768 ~ 32767
int32 -2147483648 ~ 2147483647
int64 -9223372036854775808 ~ 9223372036854775807

Map

1
2
make(map[string]int)
make(map[string]int, 100)

类型转换

Int

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// int转换成int32
i32 = int32(i)

// int转换成int64
i64 = int64(i)

// int转为float
b = float64(10)

// int转为string
// 通过fmt.Sprintf方法转换(%d代表Integer,i可以是int,int32,int64类型)
str1 := fmt.Sprintf("%d", i)

// 通过strconv.Itoa方法转换(i是int类型)
str2 := strconv.Itoa(i)

// 通过strconv.FormatInt方法转换(i可以是int,int32,int64类型)
str3 := strconv.FormatInt(int64(i), 10)

fmt.Sprintf
strconv.Itoa
strconv.FormatInt
int32,int64转换成int
1
2
3
4
5
// int32转换成int
i = int(int32)

// int64转换成int
i = int(int64)

string

1
2
3
4
5
6
7
8
9
10
11
// string转换成int64
strInt64, _ := strconv.ParseInt(str, 10, 64)

// string转换成int32
strInt32, _ := strconv.ParseInt(str, 10, 32)
// 这里strInt32实际上还是int64类型的,只是截取了32位,所以最终还是要强转一下变成int32类型,如果不强转成int32是会编译报错的
var realInt32 int32 = 0
realInt32 := int32(strInt32)

// string转换成int
strInt, err := strconv.Atoi(str)