mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 05:11:49 +08:00
fix some format and character issue.
This commit is contained in:
@@ -2,12 +2,13 @@
|
|||||||
( ***译者注:由于 Go 语言版本更替,本节中的相关内容经原作者同意将被直接替换而不作另外说明*** )
|
( ***译者注:由于 Go 语言版本更替,本节中的相关内容经原作者同意将被直接替换而不作另外说明*** )
|
||||||
|
|
||||||
Example 4.1 [hello_world.go](examples/chapter_4/hello_world.go)
|
Example 4.1 [hello_world.go](examples/chapter_4/hello_world.go)
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import "fmt"
|
import "fmt"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
fmt.Println(“hello, world”)
|
fmt.Println("hello, world")
|
||||||
}
|
}
|
||||||
|
|
||||||
##4.2.1 包,导入和可见性
|
##4.2.1 包,导入和可见性
|
||||||
@@ -51,16 +52,21 @@ _每一段代码只会被编译一次_
|
|||||||
___import “fmt”___ 告诉 Go 编译器,这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。包名封闭在 `""` 中。从已编译的包中导入并加载公开声明方法,不用插入已编译包的源代码。
|
___import “fmt”___ 告诉 Go 编译器,这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。包名封闭在 `""` 中。从已编译的包中导入并加载公开声明方法,不用插入已编译包的源代码。
|
||||||
|
|
||||||
如果需要多个包,他们可以使用分隔声明,一个个的导入:
|
如果需要多个包,他们可以使用分隔声明,一个个的导入:
|
||||||
|
|
||||||
import “fmt”
|
import “fmt”
|
||||||
import “os”
|
import “os”
|
||||||
|
|
||||||
或:
|
或:
|
||||||
|
|
||||||
import “fmt”; import “os”
|
import “fmt”; import “os”
|
||||||
|
|
||||||
但是更短并且更优雅的方法(称为_factoring the keyword_,同样适用于const,var 和 type)也是有的:
|
但是更短并且更优雅的方法(称为_factoring the keyword_,同样适用于const,var 和 type)也是有的:
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
(它还可以更短:`import ("fmt", "os")`但是对于分发版本,gofmt后会强制换行)
|
(它还可以更短:`import ("fmt", "os")`但是对于分发版本,gofmt后会强制换行)
|
||||||
|
|
||||||
当需要导入多个包时,它会按字母顺序排列包名。
|
当需要导入多个包时,它会按字母顺序排列包名。
|
||||||
@@ -91,11 +97,12 @@ ___pack1.Thing 和 pack2.Thing___
|
|||||||
一个包可以,也是有用的(为了更简短,名称冲突,...),也可以给予另一个名称(别名),如:`import fm "fmt"`。下面的代码使用了别名:
|
一个包可以,也是有用的(为了更简短,名称冲突,...),也可以给予另一个名称(别名),如:`import fm "fmt"`。下面的代码使用了别名:
|
||||||
|
|
||||||
Example 4.2 [alias.go](examples/chapter_4/alias.go)
|
Example 4.2 [alias.go](examples/chapter_4/alias.go)
|
||||||
|
|
||||||
package main
|
package main
|
||||||
import fm “fmt” // alias3
|
import fm "fmt" // alias3
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
fm.Println(“hello, world”)
|
fm.Println("hello, world")
|
||||||
}
|
}
|
||||||
|
|
||||||
_提醒_:导入一个包,但是没有在代码中使用会导致一个构建错误(例如:导入但补使用的: os 包)。这遵循 Go 的格言:“没有不必要的代码!“
|
_提醒_:导入一个包,但是没有在代码中使用会导致一个构建错误(例如:导入但补使用的: os 包)。这遵循 Go 的格言:“没有不必要的代码!“
|
||||||
@@ -153,10 +160,11 @@ Print 和 Println 方法也支持变量,如:fmt.Println(arr);他们使用
|
|||||||
|
|
||||||
##4.2.3 注释
|
##4.2.3 注释
|
||||||
Example 4.2 [hello_world2.go](examples/chapter_4/hello_world2.go)
|
Example 4.2 [hello_world2.go](examples/chapter_4/hello_world2.go)
|
||||||
|
|
||||||
package main
|
package main
|
||||||
import “fmt” // Package implementing formatted I/O.
|
import "fmt" // Package implementing formatted I/O.
|
||||||
func main() {
|
func main() {
|
||||||
fmt.Printf(“Καλημέρα κόσμε; or こんにちは 世界\n”)
|
fmt.Printf("Καλημέρα κόσμε; or こんにちは 世界\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
这说明了国际化字符 Καλημέρακόσμε; or こんにちは世界,可以打印,也可以用作注释使用。
|
这说明了国际化字符 Καλημέρακόσμε; or こんにちは世界,可以打印,也可以用作注释使用。
|
||||||
@@ -168,6 +176,7 @@ Example 4.2 [hello_world2.go](examples/chapter_4/hello_world2.go)
|
|||||||
每个包应该有包注释,注释块紧接 package 语句,介绍这个包并且提供相关信息,作整体功能介绍。一个包可以分散在多个文件中,但是注释只需要写在其中一个。当一个开发人员需要包的信息,使用 godoc,这些注释将被显示。其后的句子和段落可以给出更多的细节。注释句子应适当的空行。
|
每个包应该有包注释,注释块紧接 package 语句,介绍这个包并且提供相关信息,作整体功能介绍。一个包可以分散在多个文件中,但是注释只需要写在其中一个。当一个开发人员需要包的信息,使用 godoc,这些注释将被显示。其后的句子和段落可以给出更多的细节。注释句子应适当的空行。
|
||||||
|
|
||||||
例子:
|
例子:
|
||||||
|
|
||||||
// Package superman implements methods for saving the world.
|
// Package superman implements methods for saving the world.
|
||||||
//
|
//
|
||||||
// Experience has shown that a small number of procedures can prove
|
// Experience has shown that a small number of procedures can prove
|
||||||
@@ -177,6 +186,7 @@ Example 4.2 [hello_world2.go](examples/chapter_4/hello_world2.go)
|
|||||||
几乎每一个顶层的类型,常数,变量,函数和每一个导出名都应该有注释。此注释(称为文档注释)出现在函数前面,如函数 Abcd 以:“Abcd...”开始。
|
几乎每一个顶层的类型,常数,变量,函数和每一个导出名都应该有注释。此注释(称为文档注释)出现在函数前面,如函数 Abcd 以:“Abcd...”开始。
|
||||||
|
|
||||||
例子:
|
例子:
|
||||||
|
|
||||||
// enterOrbit causes Superman to fly into low Earth orbit, a position
|
// enterOrbit causes Superman to fly into low Earth orbit, a position
|
||||||
// that presents several possibilities for planet salvation.
|
// that presents several possibilities for planet salvation.
|
||||||
func enterOrbit() error {
|
func enterOrbit() error {
|
||||||
@@ -218,11 +228,13 @@ godoc-tool (参见 §3.6) 收集这些注释并产生一个技术文档。
|
|||||||
我们说 a 是 int 的基本类型,这使转型成为可能(参见 § 4.2.6)。
|
我们说 a 是 int 的基本类型,这使转型成为可能(参见 § 4.2.6)。
|
||||||
|
|
||||||
如果你有多个类型需要定义,可以使用多关键字形式,如:
|
如果你有多个类型需要定义,可以使用多关键字形式,如:
|
||||||
|
|
||||||
type (
|
type (
|
||||||
IZ int
|
IZ int
|
||||||
FZ float
|
FZ float
|
||||||
STR string
|
STR string
|
||||||
)
|
)
|
||||||
|
|
||||||
每个值经过编译后必须有类型(编译器必须能够推断出所有值的类型):
|
每个值经过编译后必须有类型(编译器必须能够推断出所有值的类型):
|
||||||
|
|
||||||
Go 语言是一种静态类型语言.
|
Go 语言是一种静态类型语言.
|
||||||
@@ -238,6 +250,7 @@ Go 语言是一种静态类型语言.
|
|||||||
- 然后是剩下的函数,首先是类型的方法,或是 main() 函数中先后顺序调用的函数;或方法和功能,按字母顺序的方法和函数排序很高的。
|
- 然后是剩下的函数,首先是类型的方法,或是 main() 函数中先后顺序调用的函数;或方法和功能,按字母顺序的方法和函数排序很高的。
|
||||||
|
|
||||||
Example 4.4 [gotemplate.go](examples/chapter_4/gotemplate.go)
|
Example 4.4 [gotemplate.go](examples/chapter_4/gotemplate.go)
|
||||||
|
|
||||||
package main
|
package main
|
||||||
import (
|
import (
|
||||||
“fmt”
|
“fmt”
|
||||||
@@ -259,12 +272,13 @@ Example 4.4 [gotemplate.go](examples/chapter_4/gotemplate.go)
|
|||||||
func Func1() { // exported function Func1
|
func Func1() { // exported function Func1
|
||||||
//...
|
//...
|
||||||
}
|
}
|
||||||
|
|
||||||
Go 程序的执行(程序启动)顺序如下:
|
Go 程序的执行(程序启动)顺序如下:
|
||||||
|
|
||||||
(1)在 package main 中的包全部导入,按标明的顺序:
|
(1)在 package main 中的包全部导入,按标明的顺序:
|
||||||
(2)如果导入包,(1)被这个包调用(递归),但是一个确定的包只会被导入一次
|
(2)如果导入包,(1)被这个包调用(递归),但是一个确定的包只会被导入一次
|
||||||
(3)然后每一个包(以相反的顺序)中所有的常量和变量都被评估,如果它包含这个函数,将执行 init() 方法。
|
(3)然后每一个包(以相反的顺序)中所有的常量和变量都被评估,如果它包含这个函数,将执行 init() 方法。
|
||||||
(4)最后在 package main 中也一样,然后 main() 函数开始执行。
|
(4)最后在 package main 中也一样,然后 main() 函数开始执行。
|
||||||
|
|
||||||
##4.2.6 转型
|
##4.2.6 转型
|
||||||
|
|
||||||
@@ -274,6 +288,7 @@ Go 程序的执行(程序启动)顺序如下:
|
|||||||
类型B的值 = 类型B(类型A的值)
|
类型B的值 = 类型B(类型A的值)
|
||||||
|
|
||||||
例子:
|
例子:
|
||||||
|
|
||||||
a := 5.0
|
a := 5.0
|
||||||
b := int(a)
|
b := int(a)
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
package main
|
package main
|
||||||
import fm “fmt” // alias3
|
import fm "fmt" // alias3
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
fm.Println(“hello, world”)
|
fm.Println("hello, world")
|
||||||
}
|
}
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import “fmt” // Package implementing formatted I/O.
|
import "fmt" // Package implementing formatted I/O.
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
fmt.Printf(“Καλημέρα κόσμε; or こんにちは 世界\n”)
|
fmt.Printf("Καλημέρα κόσμε; or こんにちは 世界\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user