Go 基础语法
Go 常量 

Go 数据类型

在 Go 语言中,数据类型是变量的分类标准,它决定了变量可以存储的数据种类、范围以及可以对变量执行的操作。Go 是一种静态类型语言,这意味着在编译时就需要明确变量的数据类型。Go 语言的数据类型主要分为以下几类:


基本数据类型

  • 布尔类型

    bool:值只能是 true 或 false,占 1 个字节。

  • 数值类型

    整数类型

    int(一般是 32 或 64 位,取决于操作系统)

    uint(与 int 具有相同的大小)

    uintptr(无符号整型,用于存储指针地址)

    有符号整数:int8 (1字节)、int16 (2字节)、int32 (4字节)、int64 (8字节)

    无符号整数:uint8 (1字节)、uint16 (2字节)、uint32 (4字节)、uint64 (8字节)

    平台相关整数类型

        int(一般是 32 或 64 位,取决于操作系统)

        uint(与 int 具有相同的大小)

        uintptr(无符号整型,用于存储指针地址)


    浮点数类型

        float32 (4字节,精度约 6-7 位)

        float64 (8字节,精度约 15-16 位)

    复数类型

        complex64 (由两个 float32 组成)

        complex128 (由两个 float64 组成)


  • 字符和字符串

    字符

    byte(等同于 uint8,用于存储 ASCII 字符)

    rune(等同于 int32,用于存储 Unicode 字符)

    字符串

    string(Go 语言字符串是不可变的)


复合数据类型

  • 数组(Array)

var arr [5]int // 长度为 5 的 int 数组

数组长度是固定的,声明时必须指定长度。

  • 切片(Slice)

var s []int // 声明切片,不指定长度

切片是动态数组,可以扩容。

  • 映射(Map)

var m map[string]int // 声明一个键为 string,值为 int 的 map

Go 中的 map 类似于 Python 的字典(dict)

  • 结构体(Struct)

type Person struct {
    Name string
    Age  int
}

结构体用于定义自定义数据类型。

  • 指针(Pointer)

var p *int // 声明一个指向 int 类型的指针

Go 中的指针不会进行指针运算。

  • 接口(Interface)

type Shape interface {
    Area() float64
}

接口定义了一组方法,具体实现由结构体完成。


特殊数据类型

  • nil:适用于指针、切片、map、通道、接口等类型,表示“空”;

  • error:用于错误处理,如 errors.New("error message");

  • func:函数本身也是一种数据类型,可以作为参数或返回值;


总结:Go 语言提供了丰富的数据类型,包括基本类型(整数、浮点数、字符串等)、复合类型(数组、切片、map、结构体等)以及特殊类型(指针、接口、error等),能够满足不同场景的需求。