Golang数据类型详解
请问Golang中有哪些基本数据类型?它们各自的特点和适用场景是什么?复合数据类型如数组、切片、map和结构体在使用时有哪些注意事项?不同数据类型之间的转换规则是怎样的?在处理高性能场景时该如何选择合适的数据类型?
2 回复
Golang数据类型分为基本类型(整型、浮点型、布尔型、字符串)、复合类型(数组、结构体)、引用类型(切片、映射、通道、指针)和接口类型。每种类型有特定用途,如切片用于动态数组,映射用于键值对存储。
更多关于Golang数据类型详解的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Golang 的数据类型分为基本类型和复合类型两大类。
基本类型
1. 布尔类型
var b bool = true
var flag = false
2. 数值类型
整数类型:
int8,int16,int32,int64uint8,uint16,uint32,uint64int,uint(平台相关)byte(uint8 别名)rune(int32 别名,表示 Unicode 码点)
var a int = 42
var b uint8 = 255
var c byte = 'A'
var d rune = '中'
浮点数类型:
float32,float64
var f1 float32 = 3.14
var f2 float64 = 3.1415926
复数类型:
complex64,complex128
var c1 complex64 = 3 + 4i
3. 字符串类型
var s string = "Hello, World!"
str := "Go语言"
复合类型
1. 数组
固定长度的相同类型元素集合
var arr1 [3]int = [3]int{1, 2, 3}
arr2 := [...]int{4, 5, 6} // 编译器推导长度
2. 切片
动态数组,更常用
slice1 := []int{1, 2, 3}
slice2 := make([]int, 5) // 长度5,容量5
slice3 := make([]int, 3, 10) // 长度3,容量10
3. 映射
键值对集合
m1 := map[string]int{"a": 1, "b": 2}
m2 := make(map[string]int)
m2["key"] = 42
4. 结构体
自定义复合类型
type Person struct {
Name string
Age int
}
p := Person{Name: "Alice", Age: 25}
5. 指针
存储内存地址
var x int = 10
ptr := &x
*ptr = 20 // 修改 x 的值
6. 函数类型
函数作为一等公民
type Calculator func(int, int) int
var add Calculator = func(a, b int) int {
return a + b
}
7. 接口类型
定义行为契约
type Writer interface {
Write([]byte) (int, error)
}
8. 通道类型
用于 goroutine 间通信
ch := make(chan int, 10) // 缓冲通道
ch2 := make(chan string) // 无缓冲通道
类型特点
- 强类型:不允许隐式类型转换
- 零值机制:所有类型都有默认零值
- 类型推导:支持变量类型自动推导
- 类型别名:可使用
type定义类型别名
这些数据类型构成了 Go 语言强大的类型系统,支持高效、安全的编程。

