Unknown 13 년 전
부모
커밋
e1a179ce1e
1개의 변경된 파일25개의 추가작업 그리고 25개의 파일을 삭제
  1. 25 25
      eBook/04.2.md

+ 25 - 25
eBook/04.2.md

@@ -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 声明的变量的值会自动初始化为该类型的零值。类型定义了某个变量的值的集合与可对其进行操作的集合
 
-类型可以是基本的(或原生的),如 int,float,bool,string,或结构的(或复合的),如 struct,array,slice,map,channel和insterface,他们只描述了类型的行为
+类型可以是基本类型,如:int,float,bool,string;结构化的(复合的),如:struct,array,slice,map,channel;只描述类型的行为的,如: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 编程的一般结构