This commit is contained in:
Unknown
2014-04-09 00:04:59 -04:00
parent f66ca15956
commit 480ec9f46a
10 changed files with 114 additions and 62 deletions

View File

@@ -1,5 +1,7 @@
#4.4 变量
##4.4.1 简介
# 4.4 变量
## 4.4.1 简介
声明变量的一般形式是使用 `var` 关键字:`var identifier type`
需要注意的是Go 和许多编程语言不同它在声明变量时将变量的类型放在变量的名称之后。Go 为什么要选择这么做呢?
@@ -107,7 +109,8 @@ Example 4.5 [goos.go](examples/chapter_4/goos.go)
这里用到了 `Printf` 的格式化输出的功能(第 4.4.3 节)。
##4.4.2 值类型和引用类型
## 4.4.2 值类型和引用类型
程序中所用到的内存在计算机中使用一堆箱子来表示(这也是人们在讲解它的时候的画法),这些箱子被称为 “ 字 ”。根据不同的处理器以及操作系统类型,所有的字都具有 32 位4 字节)或 64 位8 字节)的相同长度;所有的字都使用相关的内存地址来进行表示(以十六进制数表示)。
所有像 intfloatboolstring 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值:
@@ -153,7 +156,8 @@ Example 4.5 [goos.go](examples/chapter_4/goos.go)
函数 `fmt.Print``fmt.Println` 会自动使用格式化标识符 `%v` 对字符串进行格式化,两者都会在每个参数之间自动增加空格,而后者还会在字符串的最后加上一个换行符。例如:`fmt.Print("Hello:", 23)` 将输出:`Hello: 23`
##4.4.4 简短形式,使用 := 赋值操作符
## 4.4.4 简短形式,使用 := 赋值操作符
我们知道可以在变量的初始化时省略变量的类型而由系统自动推断,而这个时候再在 Example 4.4.1 的最后一个声明语句写上 `var` 关键字就显得有些多余了,因此我们可以将它们简写为 `a := 50``b := false`
a 和 b 的类型int 和 bool将由编译器自动推断。
@@ -203,7 +207,8 @@ a 和 b 的类型int 和 bool将由编译器自动推断。
并行赋值也被用于当一个函数返回多个返回值时,比如这里的 `val` 和错误 `err` 是通过调用 `Func1` 函数同时得到:`val, err = Func1(var1)`
##4.4.5 init 函数
## 4.4.5 init 函数
变量除了可以在全局声明中初始化,也可以在 init() 函数中初始化。这是一类非常特殊的函数,它不能够被人为调用,而是在每个包完成初始化后自动执行,并且执行优先级比 main() 函数高。
每一个源文件都可以包含且只包含一个 init() 函数。初始化总是以单线程执行,并且按照包的依赖关系顺序执行。
@@ -292,7 +297,8 @@ init() 函数也经常被用在当一个程序开始之前调用后台执行的
print(a)
}
##链接
## 链接
- [目录](directory.md)
- 上一节:[常量](04.3.md)
- 下一节:[基本类型和运算符](04.5.md)