Golang 声明变量;
var 声明变量
- 变量简介:
变量指定了某存储单元(Memory Location)的名称,该存储单元会存储特定类型的值。在 Go 中,有多种语法用于声明变量
- 声明单个变量:
- 语法: var name type
- var: 声明变量用的 关键字;
- name: 声明的变量的名字;
- type: 声明该变量是属于什么类型的数据;
- 示例:
// 声明一个为int类型的变量 age var age int // 当还没有给变量 age 赋值的时候; // Go 会自动地将其初始化,赋值该变量类型的零值(Zero Value) // 变量可以赋值为本类型的任何值
- 同时声明多个变量:
- 语法: var name1, name2, name3 type
- 示例:
// 声明一个为int类型的变量 age1 和 age2 var age1, age2 int // 当还没有给变量 age 赋值的时候; // Go 会自动地将其初始化,赋值该变量类型的零值(Zero Value) // 变量可以赋值为本类型的任何值
- 声明变量且初始化赋值:
- 语法: var name type = initialvalue 或者 var name1, name2, name3 type = initialvalue1, initialvalue2, initialvalue3
- 示例:
package main import "fmt" func main() { var age int = 29 // 声明int类型的变量 age 并且赋值为 29 fmt.Println("my age is", age) } // 打印内容:my age is 29
类型推断
- 简介:
当变量在声明的时被赋值,那么Go 能够自动推断具有初始值的变量的类型;
因此,如果变量有初始值,就可以在变量声明中省略 type
- 语法:var name = initialvalue (Go 能够根据初始值自动推断变量的类型)
- 示例:
package main import "fmt" func main() { var age = 29 // 可以推断类型 fmt.Println("my age is", age) } // 打印内容:my age is 29
简短声明 :=
- 介绍:
Go 也支持一种声明变量的简洁形式,称为简短声明(Short Hand Declaration),
该声明使用了 := 操作符
- 语法:name := initialvalue
- 注意:
- := 操作符左边的所有变量都有初始值;
- := 操作符的左边至少有一个变量是尚未声明的;
- Go 是强类型(Strongly Typed)语言,因此不允许某一类型的变量赋值为其他类型的值;
- 错误示例:
1 // 一, 当 := 操作符 左边的变量有一个没有初始值的时候: 2 package main 3 4 import "fmt" 5 6 func main() { 7 name, age := "naveen" //error 8 9 fmt.Println("my name is", name, "age is", age) 10 } 11 // 报错:cannot assign 1 values to 2 variables;因为 age 没有被赋值; 12 13 14 // 二, 当 := 操作符 左边的变量都没有初始值的时候: 15 package main 16 17 import "fmt" 18 19 func main() { 20 a, b := 20, 30 // 声明a和b 21 fmt.Println("a is", a, "b is", b) 22 a, b := 40, 50 // 错误,没有尚未声明的变量 23 } 24 // 报错:no new variables on left side of := 因为: a 和 b 的变量已经声明过了,:= 的左边并没有尚未声明的变量 25 26 27 // 三, 当被声明的int类型变量重新赋值为string时: 28 package main 29 30 func main() { 31 age := 29 // age是int类型 32 age = "naveen" // 错误,尝试赋值一个字符串给int类型变量 33 } 34 // 报错:"naveen" (type string) as type int in assignment; 因为 age 本来声明为 int 类型,而我们却尝试给它赋字符串类型的值