Quellcode durchsuchen

统一练习的格式

leisore vor 10 Jahren
Ursprung
Commit
5a7e188727
3 geänderte Dateien mit 16 neuen und 8 gelöschten Zeilen
  1. 2 2
      eBook/10.0.md
  2. 13 5
      eBook/10.1.md
  3. 1 1
      eBook/10.5.md

+ 2 - 2
eBook/10.0.md

@@ -1,8 +1,8 @@
 # 10 结构(struct)与方法(method)
 
-Go通过类型别名(alias types)结构体的形式支持用户自定义类型,或者叫定制类型。一个带属性的结构体试图表示一个现实世界中的实体。结构体是复合类型(omposite types),当需要定义一个类型,它由一系列属性组成,每个属性都有自己的类型和值的时候,就应该使用结构体,它把数据聚集在一起。然后可以访问这些数据,就好像它是一个独立实体的一部分。
+Go通过类型别名(alias types)结构体的形式支持用户自定义类型,或者叫定制类型。一个带属性的结构体试图表示一个现实世界中的实体。结构体是复合类型(composite types),当需要定义一个类型,它由一系列属性组成,每个属性都有自己的类型和值的时候,就应该使用结构体,它把数据聚集在一起。然后可以访问这些数据,就好像它是一个独立实体的一部分。结构体也是值类型,因此可以通过**new**方法来创建。
 
-组成结构体类型的那些数据称为 *字段(fields)*。一个字段有一个类型和一个名字;在一个结构体中,字段名字必须是唯一的。
+组成结构体类型的那些数据称为 *字段(fields)*。每个字段都有一个类型和一个名字;在一个结构体中,字段名字必须是唯一的。
 
 结构体的概念在软件工程上旧的术语叫ADT(抽象数据类型:Abstract Data Type),在一些老的编程语言中叫*记录(Record)*,比如Cobol,在C家族的编程语言中它也存在,并且名字也是*struct*,在面向对象的编程语言中,跟一个无方法的轻量级类一样。不过因为Go语言中没有类的概念,因此在Go中结构体有着更为重要的地位。
 

+ 13 - 5
eBook/10.1.md

@@ -12,7 +12,7 @@ type identifier struct {
 
 `type T struct {a, b int}`也是合法的语法,它更适用于简单的结构体。
 
-这个结构体里的字段都有*名字*,像field1,field2等,如果字段在代码中从来也不会被用到,那么可以命名它为*_*。
+结构体里的字段都有*名字*,像field1,field2等,如果字段在代码中从来也不会被用到,那么可以命名它为*_*。
 
 结构体的字段可以是任何类型,甚至是结构体本身(参考[10.5](10.5.md)),可以是函数或者接口(参考第11章)。可以声明结构体类型的一个变量,然后给它的字段像下面这样赋值:
 
@@ -282,19 +282,27 @@ func main() {
 
 **练习**
 
-*练习 10.1* vcard.go:定义结构体Address和VCard,后者包含一个人的名字、地址编号、出生日期和图像,试着选择正确的数据类型。构建一个自己的vcard并打印它的内容。
+练习 10.1 vcard.go:
+
+定义结构体Address和VCard,后者包含一个人的名字、地址编号、出生日期和图像,试着选择正确的数据类型。构建一个自己的vcard并打印它的内容。
 
     提示:
     VCard必须包含住址,它应该以值类型还是以指针类型放在VCard中呢?
     第二种会好点,因为它占用内存少。包含一个名字和两个指向地址的指针的Address结构体可以使用%v打印:
     {Kersschot 0x126d2b80 0x126d2be0} 
 
-*练习 10.2* 修改*persionext1.go*,使它的参数upPerson不是一个指针,解释下二者的区别。
+练习 10.2 persionext1.go:
+
+修改persionext1.go,使它的参数upPerson不是一个指针,解释下二者的区别。
 
-*练习 10.3* point.go:使用坐标X、Y定义一个二维Point结构体。同样地,对一个三维点使用它的极坐标定义一个Polar结构体。实现一个Abs()方法来计算一个Point表示的向量的长度,实现一个Scale方法,它将点的坐标乘以一个尺度因子(提示:使用math包里的Sqrt函数)( function Scale that multiplies the coordinates of a point with a scale 
+练习 10.3 point.go:
+
+使用坐标X、Y定义一个二维Point结构体。同样地,对一个三维点使用它的极坐标定义一个Polar结构体。实现一个Abs()方法来计算一个Point表示的向量的长度,实现一个Scale方法,它将点的坐标乘以一个尺度因子(提示:使用math包里的Sqrt函数)( function Scale that multiplies the coordinates of a point with a scale 
 factor)。
 
-*练习 10.3* rectangle.go:定义一个Rectangle结构体,它的长和宽是int类型,并定义方法Area()和Primeter(),然后进行测试。
+练习 10.3 rectangle.go:
+
+定义一个Rectangle结构体,它的长和宽是int类型,并定义方法Area()和Primeter(),然后进行测试。
 
 ## 链接
 - [目录](directory.md)

+ 1 - 1
eBook/10.5.md

@@ -88,7 +88,7 @@ func main() {
     1 2 3 4
     {1 2}
 
-*练习 10.5* anonymous_struct.go
+练习 10.5 anonymous_struct.go
 
 创建一个结构体,它有一个具名的float字段,2个匿名字段,类型分别是int和string。通过结构体字面量新建一个结构体实例并打印它的内容。