Go 语言内置了许多基本数据类型,这些类型使得编程变得更加方便和高效。下面我们来详细介绍这些内置类型,并对它们进行分类:
数值类型
-
整数类型:
- 有符号整数:
int8: 8 位有符号整数,范围 -128 到 127int16: 16 位有符号整数,范围 -32768 到 32767int32: 32 位有符号整数,范围 -2147483648 到 2147483647int64: 64 位有符号整数,范围 -9223372036854775808 到 9223372036854775807int: 平台相关的有符号整数(32 位或 64 位)
- 无符号整数:
uint8: 8 位无符号整数,范围 0 到 255uint16: 16 位无符号整数,范围 0 到 65535uint32: 32 位无符号整数,范围 0 到 4294967295uint64: 64 位无符号整数,范围 0 到 18446744073709551615uint: 平台相关的无符号整数(32 位或 64 位)uintptr: 无符号整数,用于存储指针
- 有符号整数:
-
浮点数类型:
float32: 32 位 IEEE-754 浮点数float64: 64 位 IEEE-754 浮点数
-
复数类型:
complex64: 由两个float32组成的复数complex128: 由两个float64组成的复数
-
其他数值类型:
byte: 等同于uint8rune: 等同于int32,表示一个 Unicode 代码点
布尔类型
bool: 布尔类型,值为true或false
字符串类型
string: 字符串类型,是一串字符的集合,使用 UTF-8 编码
派生类型
- 指针:指向另一个值的内存地址
- 数组:具有固定长度且元素类型相同的集合,例如
[3]int表示包含 3 个整数的数组 - 切片:可动态调整大小的数组片段,例如
[]int - 字典(映射):键值对集合,例如
map[string]int - 结构体:聚合多个不同类型的字段,例如
struct { Name string; Age int } - 接口:定义一组方法的集合,例如
interface { Method1() } - 函数:表示一个函数类型,例如
func(int) int
示例代码
下面是一些使用 Go 内置类型的示例代码:
package main
import "fmt"
func main() {
// 整数类型
var a int = 10
var b uint = 20
var c int8 = 30
// 浮点数类型
var d float32 = 3.14
var e float64 = 2.71828
// 复数类型
var f complex64 = 1 + 2i
var g complex128 = 3 + 4i
// 布尔类型
var h bool = true
// 字符串类型
var i string = "Hello, World!"
// 派生类型
var j [3]int = [3]int{1, 2, 3} // 数组
var k []int = []int{1, 2, 3, 4, 5} // 切片
var l map[string]int = map[string]int{"one": 1, "two": 2} // 映射
// 结构体
type Person struct {
Name string
Age int
}
var p Person = Person{Name: "Alice", Age: 30}
// 接口
type Speaker interface {
Speak() string
}
fmt.Println(a, b, c, d, e, f, g, h, i, j, k, l, p)
}
总结
Go 语言提供了丰富的内置类型,涵盖了数值类型、布尔类型、字符串类型及各种派生类型。这些内置类型是编写高效、简洁和安全代码的基础。在编写 Go 语言程序时,选择合适的内置类型对于实现功能和性能优化至关重要。