1.定义变量
goLang中定义变量的方式很多
先声明再使用;如果定义的变量未使用编译时会报错
a.
/*定义单个变量*/ var varName type //定义一个 type 类型的变量 varName varName = value //给变量 varName 赋值 var varName type = value //定义变量并赋初始值 /*定义多个变量*/ var varName1, varName2 type //定义两个 type 类型的变量 varName1 和 varName2 varName1, varName2 = val1, val2 //给两个变量分别赋值,varName1 = val1 ... var varName1, varName2 type = val1, val2 //定义两个 type 类型的变量,varName1 = val1 ...
b.
/*单个*/ var varName = val //定义变量并赋初始值,系统会根据 val (值)的类型来定义 varName (变量)的类型 /*多个*/ var varName1, varName2 = val1, val2 //varName1 = val1 ... (同上)
c.
/*单个*/ varName := val //同 b 一样,根据值来判定变量的类型 /*多个*/ varName1, varName2 := val1, val2 //varName1 = val1 ... //用 ":=" 取代 var type,写法更简洁,但是这种声明方式只能用在函数内部,否则编译会报错
d.
_, varName2 := val1, val2 //丢弃 val1 , varName2 = val2 //_(下划线)是一个特殊的变量,赋给它的值会被丢弃
e.
定义多个变量时可用 ( ) 来声明,减少代码量
var ( varName1 type varName2 type ) //定义两个变量 var ( varName1 = val1 varName2 = val2 ) //定义两个变量并赋值
2. 常量
常量:在程序不能被改变的值,一般都定义为数值,布尔值,字符串等
格式:
const constName [type] = val //定义一个常量 constName = val , type可省略,编译时系统会根据 val 来确定类型
注:
1). var num = 3 //实际上 3 也称为常量
2). 格式中 val 可以是表达式,但不能为运行时才能知道结果的表达式
3). 预定义常量: true / false / iota
4). 定义多个常量时,也可用下面方式
const ( constName1 [type] = val1 constName2 [type] = val2 )
note_var_const.go code list
package main //声明当前文件所属的包名,main 是一个可独立运行的包,编译后会生成可执行文件 import "fmt" //导入包 var id = 123456 /* id2 := 654321 //在函数外用 := ,编译时会出现错误 //non-declaration statement outside function body */ const PI = 3.14 //每个可独立运行的程序,都包含入口函数 main ,与其他语言相同,但无参数和返回值 func main() { var num int num = 100 fmt.Println(num) //输出 100 var num1, num2 int num1, num2 = 1, 2 fmt.Println(num1, num2) //输出 1 2 var no1, no2 = 3, 4 fmt.Println(no1, no2) //输出 3 4 n1, n2 := 5, 6 fmt.Println(n1, n2) //输出 5 6 _, n := 7, 8 fmt.Println(n) //输出 8 var ( key1 string key2 string ) key1, key2 = "k1", "k2" fmt.Println(key1, key2) //输出 k1 k2 var ( a = 9 b = 10 ) fmt.Println(a, b) //输出 9 10 fmt.Println(id) //输出 123456 fmt.Println(PI) //输出 3.14 /* PI = 3.1415 //改变常量的值,编译会出现错误 //cannot assign to PI //cannot use 3.1415 (type float64) as type ideal in assignment */ }
有疑问加站长微信联系(非本文作者)