📅  最后修改于: 2023-12-03 14:41:32.453000             🧑  作者: Mango
Go 语言是一种静态类型的编程语言,意味着在编写代码时,必须指明每个变量的数据类型。在 Go 中,有以下数据类型:
Go 语言中有四种基本数据类型:布尔型、数值型、字符串型和字符型。
布尔型只有两个值:true
和 false
。在 Go 中,布尔型用 bool
关键字来表示。
var b bool = true
Go 语言中有几种数值型数据类型,包括整型、浮点型和复数型。
整型分为有符号整型和无符号整型。在 Go 中,有符号整型有四种类型:int8
、int16
、int32
和 int64
。无符号整型也有四种类型:uint8
、uint16
、uint32
和 uint64
。在 Go 中,int
和 uint
类型的长度根据当前系统的位数而定,可以是 32 位或 64 位。
var i int = 10
var ui uint = 20
浮点型有两种类型:float32
和 float64
,分别表示单精度浮点数和双精度浮点数。在默认情况下,Go 会将浮点型数值解释为 float64
类型。
var f float32 = 3.14
var d float64 = 6.28
复数型有两种类型:complex64
和 complex128
,分别表示 float32 和 float64 的复数。 complex64
由 float32
的实部和虚部组成,complex128
由 float64
的实部和虚部组成。
var c complex64 = 3 + 4i
var d complex128 = 6 + 8i
字符串是用一对双引号 ""
或反引号 `
包含起来的一组字符。在 Go 中,字符串是不可变的,也就是说,一旦被创建,字符串中的字符就不可改变。
var s string = "Hello, world!"
在 Go 中,字符型数据类型是 byte
类型,它实际上就是 uint8 的别名。它用来表示 ASCII 码字符集中的单个字符。
var c byte = 'a'
在 Go 中,有两种复合数据类型:数组和结构体。
数组是一组具有相同类型的数据的集合。在 Go 中,数组的长度是固定的,不能动态增加或减少。
var a [3]int = [3]int{1, 2, 3}
结构体是一种用户自定义的数据类型,它可以包含不同类型的数据。结构体中的每个数据项都称为结构体的字段。
type person struct {
name string
age int
}
var p person
p.name = "John"
p.age = 30
在 Go 中,引用数据类型有指针、切片、映射、通道和接口。
指针是一个变量,它存储了一个值的内存地址。在 Go 中,可以使用 &
操作符获取变量的内存地址,使用 *
操作符获取指针所指向的值。
var a int = 10
var ptr *int
ptr = &a
fmt.Printf("a 的值为 %d\n", *ptr )
切片是指向连续空间的一个引用,和数组相比,切片可以动态增加或减少长度。
var s []int = make([]int, 5)
s[0] = 1
s[1] = 2
映射是一组键值对的无序集合。
var m map[string]int
m = make(map[string]int)
m["apple"] = 1
m["banana"] = 2
通道是 Go 语言中用于在 goroutine 之间传递数据的数据结构。通道的类型可以是任意类型。
var ch chan int
ch = make(chan int)
ch <- 1
fmt.Printf("从通道中读取的数据为:%d\n", <-ch)
接口是 Go 语言中实现多态的机制,它定义了一组方法签名,任何实现了这些方法的类型都被认为是该接口的实现。
type Animal interface {
Speak() string
}
type Cat struct{}
func (c Cat) Speak() string {
return "Meow"
}