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, int64
  • uint8, uint16, uint32, uint64
  • int, 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) // 无缓冲通道

类型特点

  1. 强类型:不允许隐式类型转换
  2. 零值机制:所有类型都有默认零值
  3. 类型推导:支持变量类型自动推导
  4. 类型别名:可使用 type 定义类型别名

这些数据类型构成了 Go 语言强大的类型系统,支持高效、安全的编程。

回到顶部