Go语言数据类型

Go语言数据类型教程

Go 语言 中的声明任何一个 变量 都会有一个类型与之对应,称为数据类型。Go 语言数据类型分为内置类型 、 引用类型和结构类型。

Go语言内置类型

Go 语言内置类型是由语言提供的一组类型。

Go 语言内置类型 有 数值类型字符串类型布尔类型。这些类型本质上是原始的类型。因此,当对这些值进行增加或者删除的时候,会创建一个新值。

Go语言引用类型

Go 语言引用类型我们可以理解为在做为 函数 参数传递时,传递的就是本身,而不像内置类型传递的是副本。Go语言引用类型有 切片mapchannelinterface 和函数类型。

Go语言结构类型

Go 语言结构类型可以用来描述一组数据值,这组值的本质即可以是原始的,也可以是非原始的。Go 语言结构类型定义使用的关键字为 struct

案例

内置类型

Go 语言内置类型做为参数传递时,传递的是值的拷贝,而不是本身

package main import "fmt" func append(name string){ name += " HaiCoder" fmt.Println("Name in append: ", name, "Addr: ", &name) } func main() { fmt.Println("Hello 嗨客网(www.haicoder.net)") name := "Hello" append(name) fmt.Println("Name in main: ", name, "Addr: ", &name) }

程序运行后,控制台输出如下:

30 golang数据类型.png

我们在 main() 函数定义了一个变量 name,接着将定义的变量 name 传递到函数 append 中。

我们在 append() 函数中,修改变量 name 的值,然后在 append() 函数中,打印此时的 name 值和 name 的地址。

函数执行完毕,我们再次在 main() 函数打印 name 值和 name 的地址,发现 name 值并未被修改,且 main() 函数中的 name 的地址与 append() 函数中 name 的地址不一致。

说明,我们传进 append() 函数 name 变量,只是一个拷贝。

引用类型

Go 语言引用类型做为参数传递时,传递的是值的本身,而不是拷贝

package main import "fmt" func changeSlice(modules []string){ modules[2] = "Vue" fmt.Printf("Modules in changeSlice: %v, Addr: %p\n", modules, modules) } func main() { fmt.Println("Hello 嗨客网(www.haicoder.net)") modules := []string{"Golang", "Redis", "Json", "Docker"} changeSlice(modules) fmt.Printf("Modules in main: %v, Addr: %p\n", modules, modules) }

程序运行后,控制台输出如下:

31 golang数据类型.png

我们在 main() 函数定义了一个切片 modules,接着将定义的切片 modules 传递到函数 changeSlice 中。

我们在 changeSlice() 函数中,修改切片 modules 的值,然后在 changeSlice() 函数中,打印此时的 modules 值和 modules 的地址。

函数执行完毕,我们再次在 main() 函数打印 modules 值和 modules 的地址,发现 modules 值已经被修改,且 main() 函数中的 modules 的地址与 changeSlice() 函数中 modules 的地址一致。

说明,我们传进 changeSlice() 函数 modules 变量,不是拷贝而是变量本身。

结构类型

Go 语言定义结构类型,使用的关键字为 struct

package main import "fmt" type WebSite struct { Name string Age int32 IsOnline bool } func main() { fmt.Println("Hello 嗨客网(www.haicoder.net)") webSite := WebSite{ Name:"HaiCoder", Age:100, IsOnline:true, } fmt.Printf("%+v", webSite) }

程序运行后,控制台输出如下:

32 golang数据类型.png

首先,我们使用 struct 关键字定义了一个结构类型。该结构类型包含三个字段属性,分别为 string 类型、int32 类型 和 bool 类型。

接着我我们在 main() 函数初始化该结构,并打印该结构的值。

Go语言数据类型总结

Go 语言中的声明任何一个变量都会有一个类型与之对应。Go 语言数据类型分为内置类型 、引用类型和结构类型。