1,Go语言的变量声明(数字,字母,下划线组成不能以数字打头)
Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。 并且Go语言的变量声明后必须使用。
变量声明格式:var 变量名 类型
var name string var age int var isok bool
批量声明变量 var( 变量名 类型......)
var( a string b int c bool d float32 )
2,Go语言变量赋值
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,
例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串。
布尔型变量默认为false。 切片、函数、指针变量的默认为nil
变量的常用赋值:
//初始化变量:var 变量名 类型 = 表达式 var a1 string = "gao" var a2 int = 18 //初始化多个变量可以不写类型 var a3, a4 = "gao", 20 //省略类型,编译器会自动根据右边的值来推导左边的变量类型 var b1 = "gao" var b2 = 18
局部变量的赋值:在函数的内部,可以使用更加简洁的方式声明并初始化变量
package main import ( "fmt" ) // 全局变量m var m = 100 func main() { n := 10 m := 200 // 此处声明局部变量m fmt.Println(m, n) }
匿名变量的赋值;匿名变量用一个下划线 _
表示
匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 (在Lua
等编程语言里,匿名变量也被叫做哑元变量。)
注意事项:
- 函数外的每个语句都必须以关键字开始(var、const、func等)
:=
不能使用在函数外。_
多用于占位,表示忽略值。
func foo() (int, string) { return 10, "gao" } func main() { x, _ := foo() _, y := foo() fmt.Println("x=", x) fmt.Println("y=", y) }
3,常量(const)
相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。
常量的声明和变量声明非常类似,只是把var
换成了const
,常量在定义的时候必须赋值。
const pi = 3.1415 const e = 2.7182
const可以同时声明多个常量,如果省略了值则表示和上面一行的值相同。
const ( n1 = 100 n2 n3 )
// 100 100 100 这三个值都是100
常量计数器(iota):只能在const的表达式中使用,在const出现时将被重置为0,const中每新增一行常量声明将使iota计数一次(可以理解为是const语句块的行索引)
const ( n1 = iota //0 n2 //1 n3 //2 n4 //3 )
几个常见的iota示例:
使用 _ 跳过某些值
const ( n1 = iota //0 n2 //1 _ n4 //3 )
iota
声明中间插队
const ( n1 = iota //0 n2 = 100 //100 n3 = iota //2 n4 //3 ) const n5 = iota //0
定义数量级
const ( _ = iota KB = 1 << (10 * iota) MB = 1 << (10 * iota) GB = 1 << (10 * iota) TB = 1 << (10 * iota) PB = 1 << (10 * iota) )
多个iota
定义在一行
const ( a, b = iota + 1, iota + 2 //1,2 c, d //2,3 e, f //3,4 )