This commit is contained in:
Unknown
2013-04-16 16:30:01 -04:00
parent 143c0816c3
commit e1a179ce1e

View File

@@ -155,7 +155,7 @@ main 函数是每一个可执行程序所必须包含的,一般来说都是在
程序正常退出的代码为 0 `Program exited with code 0`如果程序因为异常而被终止则会返回非零值1。这个数值可以用来测试是否成功执行一个程序。
##4.2.3 注释QUESTION
##4.2.3 注释
Example 4.2 [hello_world2.go](examples/chapter_4/hello_world2.go)
package main
@@ -164,15 +164,15 @@ Example 4.2 [hello_world2.go](examples/chapter_4/hello_world2.go)
fmt.Printf("Καλημέρα κόσμε; or こんにちは 世界\n")
}
这说明了国际化字符 Καλημέρακόσμε; or こんにちは世界,可以打印,也可以用作注释使用
上面这个例子通过打印 `Καλημέρα κόσμε; or こんにちは 世界` 展示了如何在 Go 中使用国际化字符,以及如何使用注释
注释肯定不会被编译,但是他们被 godoc使用参见 § 3.6
注释不会被编译,但可以通过 godoc使用( 3.6
行注释`//`开始,可以在一行的开头或其他地方;这是最经常被使用的。多行注释也叫块注释`/*`开始,以`*/`结束,不允许嵌套;这是用来包文档和注释代码
行注释是最常见的注释形式,你可以在任何地方使用以 `//` 开头的单行注释。多行注释也叫块注释,均已以 `/*` 开头,并以 `*/` 结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段
每个包应该有注释,注释块紧接 package 语句,介绍这个包并且提供相关信息,作整体功能介绍。一个包可以分散在多个文件中,但是注释只需要在其中一个。当一个开发人员需要包的信息,使用 godoc这些注释将被显示。其后的句子和段落可以给出更多的细节。注释句子应适当的空行
个包应该有相关注释, package 语句之前的块注释将被默认认为是这个包的文档说明,其中应该提供一些相关信息并对整体功能做简要的介绍。一个包可以分散在多个文件中,但是只需要在其中一个进行注释说明即可。当开发人员需要了解包的一些情况时,自然会用 godoc 来显示包的文档说明,在首行的简要注释之后可以用成段的注释来进行更详细的说明,而不必拥挤在一起。另外,在多段注释之间应以空行分隔加以区分
例:
// Package superman implements methods for saving the world.
//
@@ -180,9 +180,9 @@ Example 4.2 [hello_world2.go](examples/chapter_4/hello_world2.go)
// helpful when attempting to save the world.
package superman
几乎每一个顶层的类型,常数,变量函数和每一个导出名都应该有注释。此注释(称为文档注释)出现在函数前面,如函数 Abcd 以:“Abcd...”开始
几乎所有全局作用域的类型、常量、变量函数和被导出的对象都应该有一个合理的注释。如果这种注释(称为文档注释)出现在函数前面,如函数 Abcd,则要以 "Abcd..." 作为开头
例:
// enterOrbit causes Superman to fly into low Earth orbit, a position
// that presents several possibilities for planet salvation.
@@ -190,41 +190,43 @@ Example 4.2 [hello_world2.go](examples/chapter_4/hello_world2.go)
...
}
godoc-tool (参见 §3.6) 收集这些注释并产生一个技术文档。
godoc 工具(第 3.6 节)会收集这些注释并产生一个技术文档。
##4.2.4 类型
变量(常量)保持数据,数据可以是不同数据类型或者短整型。使用 var 声明的变量自动初始化为的零值。类型定义了一系列值及操作,可以填充这些值
可以包含数据的变量(常量)可以使用不同数据类型或类型来保存数据。使用 var 声明的变量的值会自动初始化为该类型的零值。类型定义了某个变量的值的集合与可对其进行操作的集合
类型可以是基本的(或原生的),如 intfloatboolstring,或结构的(复合的),如 structarrayslicemapchannel和insterface他们只描述了类型的行为
类型可以是基本类型,如intfloatboolstring结构的(复合的),如structarrayslicemapchannel只描述类型的行为的insterface
结构化的类型没有真正的值,它的值是 nil,这是这些类型的默认值(在 Objective-C 中是 nil在 Java 中是 null在 C 和 C++ 中是NULL或 0 )。Go 中没有类型继承。
结构化的类型没有真正的值,它使用 nil 作为默认值(在 Objective-C 中是 nil在 Java 中是 null在 C 和 C++ 中是NULL或 0值得注意的是Go 语言中不存在类型继承。
函数也可以是一个确定的类型,就是使用函数返回一个类型。返回类型写在函数名称和操作参数列表后面,如:
函数也可以是一个确定的类型,就是以函数作为返回类型。这种类型的声明要写在函数名和可选的参数列表之后,例如:
func FunctionName (a typea, b typeb) typeFunc
返回 typeFunc 类型的变量 var 可以在函数的某处声明
你可以在函数体中的某处返回使用类型为 typeFunc 的变量 var
return var
函数可以返回多个变量,并且返回类型使用逗号分隔和小括号`( )`包围func FunctionName (a typea, b typeb) (t1 type1, t2 type2)
一个函数可以拥有多返回值,返回类型之间需要使用逗号分割,并使用小括号 `( )` 将它们括起来,如:`func FunctionName (a typea, b typeb) (t1 type1, t2 type2)`
列子 函数 Atoi (参见 § 4.7) func Atoi(s string) (i int, err error)
示例 函数 Atoi (第 4.7 节)`func Atoi(s string) (i int, err error)`
返回的形式为: return var1, var2
返回的形式`return var1, var2`
是经常当成功(真/假)执行一个函数或错误信息与返回值一返回时使用(见下面的多分配)。
种多返回值一般用于判断某个函数是否执行成功true/false或与其它返回值一返回错误消息(详见之后的并行赋值)。
使用 type 关键字定义你自己的类型。然后你可能定义一个结构体(参见 第10章),但是也可定义一个存在的类型的别名,如:
使用 type 关键字可以定义你自己的类型你可能想要定义一个结构体(第 10 章),但是也可定义一个已经存在的类型的别名,如:
type IZ int
然后我们可以定义变量如var a IZ = 5
***译者注:这里并不是真正意义上的别名,因为使用这种方法定义之后的类型可以拥有更多的特性,且在类型转换时必须显式转换***
我们说 a 是 int 的基本类型,这使转型成为可能(参见 § 4.2.6)
然后我们可以像 `var a IZ = 5` 这样声明变量
如果你有多个类型需要定义,可以使用多关键字形式,如:
这里我们可以看到 int 是变量 a 的底层类型,这也使得它们之间存在相互转换的可能(第 4.2.6 节)。
如果你有多个类型需要定义,可以使用因式分解关键字的方式,例如:
type (
IZ int
@@ -232,9 +234,7 @@ godoc-tool (参见 §3.6) 收集这些注释并产生一个技术文档。
STR string
)
每个值经过编译后必须有类型(编译器必须能够推断出所有值的类型)
Go 语言是一种静态类型语言.
每个值都必须在经过编译后属于某个类型(编译器必须能够推断出所有值的类型),因为 Go 语言是一种静态类型语言。
##4.2.5 Go 编程的一般结构