如何理解go内置类型

159 阅读3分钟

Go 语言内置了许多基本数据类型,这些类型使得编程变得更加方便和高效。下面我们来详细介绍这些内置类型,并对它们进行分类:

数值类型

  1. 整数类型

    • 有符号整数:
      • int8: 8 位有符号整数,范围 -128 到 127
      • int16: 16 位有符号整数,范围 -32768 到 32767
      • int32: 32 位有符号整数,范围 -2147483648 到 2147483647
      • int64: 64 位有符号整数,范围 -9223372036854775808 到 9223372036854775807
      • int: 平台相关的有符号整数(32 位或 64 位)
    • 无符号整数:
      • uint8: 8 位无符号整数,范围 0 到 255
      • uint16: 16 位无符号整数,范围 0 到 65535
      • uint32: 32 位无符号整数,范围 0 到 4294967295
      • uint64: 64 位无符号整数,范围 0 到 18446744073709551615
      • uint: 平台相关的无符号整数(32 位或 64 位)
      • uintptr: 无符号整数,用于存储指针
  2. 浮点数类型

    • float32: 32 位 IEEE-754 浮点数
    • float64: 64 位 IEEE-754 浮点数
  3. 复数类型

    • complex64: 由两个 float32 组成的复数
    • complex128: 由两个 float64 组成的复数
  4. 其他数值类型

    • byte: 等同于 uint8
    • rune: 等同于 int32,表示一个 Unicode 代码点

布尔类型

  • bool: 布尔类型,值为 truefalse

字符串类型

  • 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 语言程序时,选择合适的内置类型对于实现功能和性能优化至关重要。