GO语言基础入门--变量
1、GO变量声明
var v1 int//声明一个整型变量v1 var v2 string var v3 [10]int //数组 var v4 []int//数组切片 var v5 struct { //结构体 f int } var v6 *int//指针 var v7 map[string] int//map,ley为string,value为int var v8 func(a int) int
<pre name="code" class="cpp">var (
v1 int
v2 string
)
2、变量初始化
var v1 int = 10 // 正确的使用方式1 var v2 = 10 // 正确的使用方式2,编译器可以自动推导出 v2的类型 v3 := 10 // 正确的使用方式3,编译器可以自动推导出 v3的类型使用:= 可以减少代码的书写量,这对程序员来说是大大的好处啊
var i int i := 2这会导致编译错误,出现这样的错误:no new variables on left side of :=
3、变量赋值
<pre name="code" class="cpp" style="font-family: Courier;">var v10 int//先声明,再赋值 v10 = 123
i, j = 2, 3//Go支持多重赋值多重赋值最简单的好处就是,交换两数的值。如:
i, j = j, i
编译器会先计算等号右边的值,再为左边的赋值
4、匿名便量
func GetName() (firstName, lastName, nickName string) { return "May", "Chan", "Chibi Maruko" }该函数返回3个 string 类型的变量
firstName, lastName, nickName我们可以在不新定义变量的情况下,直接返回 匿名变量。这样使我们的代码变得更加简洁,优雅
_, _, nickName := GetName()
5、常量
字面常量
-12 3.14159265358979323846 // 浮点类型的常量 3.2+12i // 复数类型的常量 true // 布尔类型的常量 "foo" // 字符串常量常量定义
const Pi float64 = 3.14159265358979323846 const zero = 0.0 // 无类型浮点常量 const ( size int64 = 1024 eof = -1 // 无类型整型常量 ) const u, v float32 = 0, 3 // u = 0.0, v = 3.0,常量的多重赋值 const a, b, c = 3, 4, "foo" // a = 3, b = 4, c = "foo", 无类型整型和字符串常量如果常量在定义时没有限定类型,那么该常量 是一个 字面常量
const mask = 1 << 3
式,比如试图以如下方式定义常量就会导致编译错误:
const Home = os.GetEnv("HOME")原因很简单, os.GetEnv() 只有在运行期才能知道返回结果,在编译期并不能确定,所以
无法作为常量定义的右值。
iota比较特殊,可以被认为是一个可被编译器修改的常量,在每一个const关键字出现时被
重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字会自动增1。
从以下的例子可以基本理解iota的用法:
const ( // iota被重设为 0 c0 = iota // c0 == 0 c1 = iota // c1 == 1 c2 = iota // c2 == 2 ) const ( a = 1 << iota // a == 1 (iota在每个const开头被重设为 0) b = 1 << iota // b == 2 c = 1 << iota // c == 4 ) const ( u = iota * 42 // u == 0 v float64 = iota * 42 // v == 42.0
w = iota * 42 // w == 84 ) const x = iota // x == 0 ( 因为 iota又被重设为 0了 ) const y = iota // y == 0 ( 同上)如果两个const的赋值语句的表达式是一样的,那么可以省略后一个赋值表达式。因此,上
面的前两个const语句可简写为:
const ( // iota被重设为 0 c0 = iota // c0 == 0 c1 // c1 == 1 c2 // c2 == 2 ) const ( a = 1 <<iota // a == 1 (iota在每个const开头被重设为 0) b // b == 2 c // c == 4 )
6、枚举
看到可以用在const后跟一对圆括号的方式定义一组常量,这种定义法在Go语言中通常用于定义
枚举值。 Go语言并不支持众多其他语言明确支持的enum关键字。
const ( Sunday = iota Monday Tuesday Wednesday Thursday Friday Saturday numberOfDays // 这个常量没有导出 )同Go语言的其他符号( symbol)一样,以大写字母开头的常量在包外可见。
以上例子中numberOfDays为包内私有,其他符号则可被其他包访问。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。