GO数据类型


数据类型

简单类型

  • 空值:nil
  • 整型:int,int8,int16,int32,int64,uint,uint8,uint16,uint32,uint64
  • 浮点型:float32,float64
  • 字节类型:byte(等于uint8)
  • 字符串:string
  • 布尔类型:bool

字符串

在 Go 语言中,字符串使用 UTF8 编码,UTF8 的好处在于,如果基本是英文,每个字符占 1 byte,和 ASCII 编码是一样的,非常节省空间,如果是中文,一般占3字节

str1:= "go语言"  //len(str1)=8,即str1的长度是9,占用8个字节,"go"占用2字节,"语言"占用6个字节
// 带有中文的最好用rune,rune=32,无论占多少个字节都用 int32 来表示
str2:=[]rune("go语言") // len(str2)=4

数组与切片

  • 数组是一个固定的类型,不同大小的数组是不同的类型。例如[2]int与[3]int是两个不同的数据类型。数组的长度不可变。
  • 切片是数组的抽象。 切片使用数组作为底层结构。切片包含三个组件:容量,长度和指向底层数组的指针,切片可以随时进行扩展

字典

用map关键字表示字段,并且使用make初始化

m := make(map[string]string)

字典可返回2个参数

val, ok := m["a"] // 第一个参数返回具体的值,如果没有则为对应类型的零值。第二个参数表示key是否存在,存在则为true,不存在则为false

指针

指针即某个值的地址,类型定义时使用符号*,对一个已经存在的变量,使用 & 获取该变量的地址

str := "Golang"
var p *string = &str // p 是指向 str 的指针
*p = "Hello"
fmt.Println(str) // Hello 修改了 p,str 的值也发生了改变

一般来说,指针通常在函数传递参数,或者给某个类型定义新的方法时使用。Go 语言中,参数是按值传递的,如果不使用指针,函数内部将会拷贝一份参数的副本,对参数的修改并不会影响到外部变量的值。如果参数使用指针,对参数的传递将会影响到外部变量


文章作者: Alex
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Alex !
  目录