📜  Go数据类型(1)

📅  最后修改于: 2023-12-03 14:41:37.145000             🧑  作者: Mango

Go数据类型

Go语言是一种强类型、静态类型的编程语言。在Go中,每个变量或表达式都有一个固定的数据类型。Go中的数据类型可以分为以下几类:

  1. 基本类型
  2. 引用类型
  3. 接口类型
基本类型

基本类型指的是Go语言中预定义的数据类型。这些类型可以直接使用不需要进行定义。Go语言中的基本类型包括:

  • bool
  • 数值类型:int、float、complex
  • 字符串类型:string
  • 字符类型:rune、byte
bool类型

bool类型代表布尔类型,值为true或false。在Go语言中占用1个字节大小。

数值类型

数字类型包括整数和浮点数两种类型。

整型

Go语言提供了多种整数类型,包括有符号和无符号整数类型,如int、int8、int16、int32、int64、uint、uint8、uint16、uint32、uint64等。

var i int = 10
var ui uint = 10
var i8 int8 = 127
var ui8 uint8 = 255
var i16 int16 = 32767
var ui16 uint16 = 65535
var i32 int32 = 2147483647
var ui32 uint32 = 4294967295
var i64 int64 = 9223372036854775807
var ui64 uint64 = 18446744073709551615

浮点型

浮点数类型包括float32和float64两种类型。Go语言中的浮点数采用的IEEE 754标准。它们分别占4个字节和8个字节大小。

var f1 float32 = 3.1415926
var f2 float64 = 3.14159265358979323846
字符串类型

字符串类型表示Unicode字符序列,用双引号""或反引号``包围。

var str string = "I am a string"
var rawstr string = `I am a raw string \n`
字符类型

字符类型用来表示单个Unicode字符,有两种类型:rune和byte。rune类型可以用来表示Unicode编码的字符,每个rune占用4个字节大小;byte类型则是uint8类型的别名。

var ch1 rune = '中'
var ch2 rune = '国'
var ch byte = 'A'
引用类型

引用类型指的是引用了以其它类型为基础类型,使用make函数创建的类型。Go语言中的引用类型包含切片、映射、通道等。

切片类型

切片类型是由数组类型衍生出来类型,表示数组的一部分。切片类型可以动态增长和缩小。切片可以用make函数来创建。

var s1 []int = make([]int, 5)      // len=5, cap=5
var s2 []int = make([]int, 5, 10)  // len=5, cap=10
映射类型

映射类型是由哈希表实现的键值对形式的容器型。映射类型可以用make函数来创建。

var m map[string]int = make(map[string]int)
m["a"] = 1
m["b"] = 2
通道类型

通道类型是用来与其他Go协程进行通讯的一种类型。通道包含了一个类型和一个方向。

var c chan int = make(chan int) // 只能用于接收int值的通道
c <- 1                          // 向通道发送数据
val := <-c                      // 从通道接受数据
接口类型

接口类型定义了一组方法,用来描述对象的行为和功能。在Go语言中,接口类型是一种引用类型。接口类型可以使用任何类型实现接口。

type MyInterface interface {
    Func1() int
    Func2() string
}

type MyStruct struct {}

func (m MyStruct) Func1() int {
    return 1
}

func (m MyStruct) Func2() string {
    return "Hello, World!"
}

var obj MyInterface = MyStruct{}