Golang学习之变量和常量
变量
声明
-
变量命名方式:字母、数字和下划线组成,首个字符不能是数字,关键字和保留字不能被用作变量名
-
变量声明后才能被使用,且声明后必须使用
-
变量声明后,如果没有初始化,打印出来的是空
定义方式
-
方式一:只定义
var 变量名 类型
var 变量名1,变量名2 类型
如var a int/string,var a,b int/string -
方式二:定义,并赋值,类型靠golang自动推导
var 变量名 = 值,相当于var 变量名 类型,变量名 = 值
var 变量名1,变量名2 = 值1,值2
如var a = "kuofluo"相当于var a string,a = "kuofluo" -
方式三
变量名 := 值,这种声明格式只能在函数体中出现
变量名1,变量名2 := 值1,值2
常量
声明
常量的数据类型只能是布尔型、数字型(整数型、浮点型和复数),以及字符串型
定义方式
const 常量 [类型] = 赋值
const ( 常量1 = 值1 常量2 = 值2 常量3 = 值3 )
iota
iota是一种特殊常量,可以认为是一个可以被编译器修改的常量,相当于一个计数器,每次+1,iota在const关键字出现时,将被重置为0,const中每新增一行常量声明,便将iota计数一次
如
const ( a = iota b = iota c = iota )
第一个iota等于0,每当iota在新的一行被使用时,其值会自动+1,因此,a=0,b=1,c=2
可以简写为
const ( a = iota b c )
示例
package main
import "fmt"
const (
i=1<<iota
j=3<<iota
k
l
)
func main() {
fmt.Println("i=",i)
fmt.Println("j=",j)
fmt.Println("k=",k)
fmt.Println("l=",l)
输出:
i= 1
j= 6
k= 12
l= 24
解释:
iota 表示从 0 开始自动加 1,所以 i=1<<0, j=3<<1(<< 表示左移的意思),即:i=1, j=6,这没问题,关键在 k 和 l,从输出结果看 k=3<<2,l=3<<3。
简单表述:
i=1:左移 0 位,不变仍为 1。
j=3:左移 1 位,变为二进制 110,即 6。
k=3:左移 2 位,变为二进制 1100,即 12。
l=3:左移 3 位,变为二进制 11000,即 24。
注:<<n==*(2^n)。

浙公网安备 33010602011771号