📌  相关文章
📜  golang 类型 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:01:02.352000             🧑  作者: Mango

Golang 类型 - Go 编程语言

Go 是一种开源的编程语言,由 Google 开发,其类型系统为静态类型。Golang 的类型系统是强类型和静态类型的,这使得程序可以在编译时检测到类型不匹配的错误。Golang 的类型系统还提供了类型推断,可以大大减少代码中的类型声明,这使得代码更加简洁。

基本类型

Go 的基本类型包括布尔型、数值型和字符串型。其中布尔型只有 truefalse 两种取值,而数值型包括整型和浮点型。

布尔型

Go 的布尔型使用 bool 关键字表示,布尔型只有两种取值 truefalse。示例代码如下:

var x bool = true
var y bool = false
整型

Go 的整型分为有符号整型和无符号整型两种,有符号整型包括 int8int16int32int64,无符号整型包括 uint8uint16uint32uint64。其中,int 表示有符号整型,根据平台的不同大小不同。示例代码如下:

var x int8 = -128
var y uint16 = 65535
浮点型

Go 的浮点型有两种,分别是 float32float64。其中,float32 的有效数字为 7 位,float64 的有效数字为 15 位。示例代码如下:

var x float32 = 3.14
var y float64 = 3.141592653589793
字符串型

Go 的字符串类型为 string,它使用双引号或反引号括起来,支持使用加号连接两个字符串。示例代码如下:

var x string = "Hello, "
var y string = "World!"
var z string = x + y
复合类型

Go 的复合类型包括数组、切片、映射、结构体和接口。其中,数组和切片是最常用的复合类型。

数组

Go 的数组类型使用 [n]T 表示,其中 n 表示数组长度,T 表示数组元素类型。数组的元素类型可以是基本类型或复合类型,数组是值类型。示例代码如下:

var x [5]int // 定义一个长度为 5 的 int 类型数组

for i := 0; i < len(x); i++ {
    x[i] = i + 1
}

for i, v := range x {
    fmt.Printf("x[%d] = %d\n", i, v)
}

输出:

x[0] = 1
x[1] = 2
x[2] = 3
x[3] = 4
x[4] = 5
切片

Go 的切片是一种动态数组,它是基于数组实现的。切片通过定义一个开始位置和结束位置来定义,其定义方式为 a[开始位置:结束位置],其中 开始位置结束位置 都是可选的。切片的长度可以动态扩展,是引用类型。示例代码如下:

x := []int{1, 2, 3, 4, 5} // 定义一个 int 类型的切片

y := x[1:3] // 定义一个从下标 1 开始,到下标 3 结束(不包括下标 3)的 int 类型切片

fmt.Println(y) // 输出 [2 3]

y = append(y, 6, 7) // 在切片中添加两个新的元素

fmt.Println(y) // 输出 [2 3 6 7]
映射

Go 的映射类型使用 map[T1]T2 表示,其中 T1 表示映射的键类型,T2 表示映射的值类型。映射中的键和值可以是任何类型,映射是引用类型。示例代码如下:

x := map[string]int{
    "one":   1,
    "two":   2,
    "three": 3,
}

fmt.Println(x["two"]) // 输出 2

x["four"] = 4 // 在映射中添加一个新的元素

fmt.Println(x["four"]) // 输出 4
结构体

Go 的结构体是一种自定义数据类型,它由多个字段组成。结构体中的字段可以是基本类型或复合类型。示例代码如下:

type Person struct {
    Name string
    Age  int
}

x := Person{
    Name: "Tom",
    Age:  18,
}

fmt.Println(x.Name) // 输出 Tom
接口

Go 的接口是一种抽象的类型,它定义了一组方法的签名。接口可以实现多态,确保同一接口的不同实体具有相同的行为。示例代码如下:

type Shape interface {
    Area() float64
}

type Rectangle struct {
    Width  float64
    Height float64
}

func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

x := Rectangle{
    Width:  2,
    Height: 3,
}

var s Shape = x

fmt.Println(s.Area()) // 输出 6
总结

本文介绍了 Golang 的基本类型和复合类型。通过本文的学习,相信大家已经对 Golang 的类型系统有了初步的了解。在实际开发中,需要根据实际需求选择合适的数据类型,提高程序的执行效率和代码的可维护性。