Loading... # 变量 ## 变量的使用 1.声明+赋值 ```go var sd string = "666" fmt.Println(sd) var v4,v5 = 11,22 v4,v5 := 11,22 ``` 2.先声明后赋值 ```go var sd string sd = "666" fmt.Println(sd) ``` ## 变量的简写 1.声明+赋值 ```go var name string = "liaokong" var name = "liaokong" // 类型推导 name := "liaokong" // 推荐 _ := 666 // 匿名变量,匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 ``` **_多用于占位,表示忽略值** 2.先声明后赋值 ```go var name srting var message string var data string var name,message,data string ``` 3.批量声明 ```go var ( name = "liaokong" age = 18 hobby = "coding" gender string // 只声明不赋值 则使用默认值 length int ) ``` ## 变量作用域 如果我们定义了大括号,那么在大括号中定义的变量: * 不能被上级使用。 * 可以在同级使用。 * 可以在子级使用。 ```go package main import "fmt" func main() { name := "liaokong" fmt.Println(name) if true { age := 18 name := "alex" fmt.Println(age) fmt.Println(name) } fmt.Println(name) } ``` 全局变量和局部变量 * 全局变量,未写在函数中的变量称为全局变量; * 函数外的每个语句都必须以关键字开始(var、const、func等) * 不可以使用`v1:=xx`方式进行简化; * 可以使用批量声明方式声明多个变量; * 项目中寻找变量时最后一环,如果在全局变量中还找不到指定的变量就会报错 * 局部变量,编写在{}里面的变量; * 可以使用任意方式简化; * 可以使用批量声明方式声明多个变量; ```go package main import "fmt" // 全局变量(不能以省略的方式) var school string = "孩IT" // 可以 //var school = "孩IT" // 可以 //school := "IT" // 不可以 var ( v1 = 123 v2 = "你好" v3 int ) func main() { name := "liaokong" // 局部变量 fmt.Println(name) if true { age := 18 // 局部变量 name := "alex" // 局部变量 fmt.Println(age) fmt.Println(name) } fmt.Println(name) fmt.Println(school) fmt.Println(v1, v2, v3) } ``` ## 赋值及内存相关 go的变量,如果两个变量值相同,他们所指向的内存地址也不会相同。 使用int、string、bool这三种数据类型时,如果遇到变量的赋值则会拷贝一份。【值类型】 # 常量 不可被修改的变量。 ```go const age int = 98 const age = 98 const ( v1 = 123 v2 = "666" ) ``` ```go package main import "fmt" const Data = 999 const ( pi = 3.1415926 gender = "男" ) func main() { // 定义变量 //var name string = "liaokong" //var name = "liaokong" name := "liaokong" name = "alex" fmt.Println(name) // 定义常量 //const age int = 98 const age = 98 fmt.Println(age) // 常量因式分解 const ( v1 = 123 v2 = 456 //pi = 9.9 ) fmt.Println(v1, v2, pi, gender) } ``` 一般都会定义在全局 ## iota 可有可无,当做一个在声明常量时的一个计数器。 ```go package main const ( monday = iota + 1 tuesday wednesday thursday friday saturday sunday ) const ( n1 = iota n2 n3 ) func main() { // iota // 示例1 /* const ( v1 = 1 v2 = 2 v3 = 3 v4 = 4 v5 = 5 ) fmt.Println(v1, v2, v3, v4, v5) */ // 示例2 /* const ( v1 = iota v2 v3 v4 v5 ) fmt.Println(v1, v2, v3, v4, v5) */ // 示例3 /* const ( v1 = iota + 2 v2 v3 v4 v5 ) fmt.Println(v1, v2, v3, v4, v5) */ // 示例4: /* const ( v1 = iota + 2 _ v2 v3 v4 v5 ) fmt.Println(v1, v2, v3, v4, v5) */ } ``` Last modification:February 28th, 2021 at 07:06 pm © 允许规范转载 Support If you think my article is useful to you, please feel free to appreciate ×Close Appreciate the author Sweeping payments