Go语言学习二:Go基础(变量、常量、数值类型、字符串、错误类型)

最后更新于:2022-04-01 11:58:53

# 定义变量 使用var关键字是go语言最基本的定义变量方式,与C语言不通的是Go语言把变量放在变量名后面。 ~~~ //定义一个"liuxinming"变量,类型为"type"的变量 var liuxinming type ~~~ ~~~ //定义多个"type"类型变量 var name1,name2,name3 type ~~~ ~~~ //初始化liuxinming的变量为"value"值,类型是"type" var liuxinming type = value ~~~ ~~~ //定义三个类型为"type"的变量,并且初始化 var name1,name2,name3 type = 1,2,3 ~~~ ~~~ //简化上面的语句 name1,name2,name3 := 1,2,3 ~~~ **说明:** ":="这个符号直接取代了var 和 type,这种形式叫做简短声明,不过它有一个限制,它只能用在函数内部(在函数外部使用则会无法编译通过)。 所以一般用var方式来定义全局变量。 "_" 是一个特殊的变量名,任何赋予它的值都会被丢弃 ~~~ _,b = 1,2 //b被赋予2,并同时丢弃1 ~~~ Go预约对于已声明但未使用的变量会在编译阶段报错,如下 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-16_57396c2761cb6.jpg) ~~~ package main func main(){ var i int//声明了i,但未使用 } ~~~ # 常量 在程序编译阶段就确定下来的值,而程序在运行时则无法改变该值,在GO语言中,常量可以定义为数值、布尔值或字符串等类型 ~~~ const constantname = value //如果需要,可以明确指定常量类型 const Pi float32 = 3.1415926 const i = 10000 const MaxThread = 10 const prefix = "astaxie_" ~~~ # Boolean类型 布尔值的类型bool,值为true或false,默认false. ~~~ //实例代码 var isActvie bool //全局变量声明 var enabled,disabled = true, false//忽略类型的声明 func test(){ var available bool //一般声明 valid := false //简短声明 available = true //赋值操作 } ~~~ # 数值类型 ### 整数类型: 1、有符合 2、无符号 Go语言同时支持int 和 uint,这两种类型的长度相同,但具体长度取决于不同编译器的实现。 Go预约也有直接定义好位数的类型: rune(int32的别称) int8 int16 int32 int64 byte(uint8的别称) uint8 unit16 uint32 uint64 注意:这些类型的变量之间不允许互相赋值或操作 ~~~ //错误代码 var a int8 var b int32 c := a+ b ~~~ ###浮点数的类型: float32  float64(默认) Go语言还支持复数,它默认类型是complex128(64位实数+64位虚数)complex64 复数的形式为RE+IMi,其中RE是实数部分,IM是虚数部分,而最后的i是虚数单位。 ~~~ package main import "fmt" func main() { var c complex64 = 5 + 5i fmt.Printf("Value is : %v", c) } ~~~ ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-16_57396c27733f9.jpg) # 字符串 Go语言字符串都是采用UTF-8字符集编码。字符串是用一对双引号或反引号(``)括起来定义,它的类型是string。 ~~~ //示例代码 func test(){ userame,realname := "grassroots", "liuxinming" //简短声明 username2 := "test" username2 = "test2" //常规赋值 } ~~~ **在Go语言中字符串是不可变的,下面代码编译时会报错** ~~~ var s string = "hello" s[0] = 'c' ~~~ 可以使用下面代码实现 ~~~ /* * 字符串示例代码 *@author lxm */ package main import "fmt" func main() { s := "hello" c := []byte(s) //将字符串 s 转换为 []byte 类型 s2 := string(c) //再转换回 string类型 fmt.Printf("%s\n", s2) } ~~~ ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-16_57396c278469e.jpg) Go语言中可以使用“+” 操作符来链接两个字符串。 修改字符串参考如下代码: ~~~ /* *修改字符串 *@author lxm */ package main import "fmt" func main() { s := "hello" s = "c" + s[1:] //字符串切片操作 fmt.Printf("%s\n", s) } ~~~ ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-16_57396c279a509.jpg) # 错误类型 error类型,用来处理错误信息,Go语言的package里面还有专门一个包errors来处理错误。
';