mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 00:11:36 +08:00
Reformat
This commit is contained in:
@@ -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 字节)的相同长度;所有的字都使用相关的内存地址来进行表示(以十六进制数表示)。
|
||||
|
||||
所有像 int,float,bool,string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值:
|
||||
@@ -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)
|
||||
|
Reference in New Issue
Block a user