修复strcut错别字,针对web开发不同语言开发者的类比
This commit is contained in:
20
2.4.md
20
2.4.md
@@ -6,11 +6,11 @@ Go语言中,也和C或者其他语言一样,我们可以声明新的类型
|
|||||||
name string
|
name string
|
||||||
age int
|
age int
|
||||||
}
|
}
|
||||||
看到了吗?申明一个strcut如此简单,上面的类型包含有两个字段
|
看到了吗?申明一个struct如此简单,上面的类型包含有两个字段
|
||||||
- 一个string类型的字段name,用来保存用户名称这个属性
|
- 一个string类型的字段name,用来保存用户名称这个属性
|
||||||
- 一个int类型的字段age,用来保存用户年龄这个属性
|
- 一个int类型的字段age,用来保存用户年龄这个属性
|
||||||
|
|
||||||
如何使用strcut呢?请看下面的代码
|
如何使用struct呢?请看下面的代码
|
||||||
|
|
||||||
type person struct {
|
type person struct {
|
||||||
name string
|
name string
|
||||||
@@ -32,7 +32,7 @@ Go语言中,也和C或者其他语言一样,我们可以声明新的类型
|
|||||||
|
|
||||||
P := person{age:24, name:"Tom"}
|
P := person{age:24, name:"Tom"}
|
||||||
|
|
||||||
下面我们看一个完整的使用strcut的例子
|
下面我们看一个完整的使用struct的例子
|
||||||
|
|
||||||
package main
|
package main
|
||||||
import "fmt"
|
import "fmt"
|
||||||
@@ -44,7 +44,7 @@ Go语言中,也和C或者其他语言一样,我们可以声明新的类型
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 比较两个人的年龄,返回年龄大的那个人,并且返回年龄差
|
// 比较两个人的年龄,返回年龄大的那个人,并且返回年龄差
|
||||||
// strcut也是传值的
|
// struct也是传值的
|
||||||
func Older(p1, p2 person) (person, int) {
|
func Older(p1, p2 person) (person, int) {
|
||||||
if p1.age>p2.age { //比较p1和p2这两个人的年龄
|
if p1.age>p2.age { //比较p1和p2这两个人的年龄
|
||||||
return p1, p1.age-p2.age
|
return p1, p1.age-p2.age
|
||||||
@@ -61,7 +61,7 @@ Go语言中,也和C或者其他语言一样,我们可以声明新的类型
|
|||||||
//两个字段都写清楚的初始化
|
//两个字段都写清楚的初始化
|
||||||
bob := person{age:25, name:"Bob"}
|
bob := person{age:25, name:"Bob"}
|
||||||
|
|
||||||
//按照strcut定义顺序初始化值
|
//按照struct定义顺序初始化值
|
||||||
paul := person{"Paul", 43}
|
paul := person{"Paul", 43}
|
||||||
|
|
||||||
tb_Older, tb_diff := Older(tom, bob)
|
tb_Older, tb_diff := Older(tom, bob)
|
||||||
@@ -78,10 +78,10 @@ Go语言中,也和C或者其他语言一样,我们可以声明新的类型
|
|||||||
bob.name, paul.name, bp_Older.name, bp_diff)
|
bob.name, paul.name, bp_Older.name, bp_diff)
|
||||||
}
|
}
|
||||||
|
|
||||||
###strcut的匿名字段
|
###struct的匿名字段
|
||||||
我们上面介绍了如何定义一个strcut,定义的时候是字段名与其类型一一对应,实际上Go支持只提供类型,而不写字段名的方式,也就是匿名字段,也称为嵌入字段。
|
我们上面介绍了如何定义一个struct,定义的时候是字段名与其类型一一对应,实际上Go支持只提供类型,而不写字段名的方式,也就是匿名字段,也称为嵌入字段。
|
||||||
|
|
||||||
当匿名字段是一个strcut的时候,那么这个strcut所拥有的全部字段都被隐式地引入了当前定义的这个strcut。
|
当匿名字段是一个struct的时候,那么这个struct所拥有的全部字段都被隐式地引入了当前定义的这个struct。
|
||||||
|
|
||||||
让我们来看一个例子,让上面说的这些更具体化
|
让我们来看一个例子,让上面说的这些更具体化
|
||||||
|
|
||||||
@@ -127,7 +127,7 @@ Go语言中,也和C或者其他语言一样,我们可以声明新的类型
|
|||||||
mark.Human = Human{"Marcus", 55, 220}
|
mark.Human = Human{"Marcus", 55, 220}
|
||||||
mark.Human.age -= 1
|
mark.Human.age -= 1
|
||||||
|
|
||||||
通过匿名访问和修改字段相当的有用,但是不仅仅是strcut字段哦,所有的内置类型和自定义类型都是可以作为匿名字段的。请看下面的例子
|
通过匿名访问和修改字段相当的有用,但是不仅仅是struct字段哦,所有的内置类型和自定义类型都是可以作为匿名字段的。请看下面的例子
|
||||||
|
|
||||||
package main
|
package main
|
||||||
import "fmt"
|
import "fmt"
|
||||||
@@ -166,7 +166,7 @@ Go语言中,也和C或者其他语言一样,我们可以声明新的类型
|
|||||||
fmt.Println("Her preferred number is", jane.int)
|
fmt.Println("Her preferred number is", jane.int)
|
||||||
}
|
}
|
||||||
|
|
||||||
从上面例子我们看出来strcut不仅仅能够将strcut作为匿名字段、自定义类型、内置类型都可以作为匿名字段,而且可以在相应的字段上面进行函数操作(如例子中的append)。
|
从上面例子我们看出来struct不仅仅能够将struct作为匿名字段、自定义类型、内置类型都可以作为匿名字段,而且可以在相应的字段上面进行函数操作(如例子中的append)。
|
||||||
|
|
||||||
这里有一个问题:如果human里面有一个字段叫做phone,而student也有一个字段叫做phone,那么该怎么办呢?
|
这里有一个问题:如果human里面有一个字段叫做phone,而student也有一个字段叫做phone,那么该怎么办呢?
|
||||||
|
|
||||||
|
|||||||
11
3.2.md
11
3.2.md
@@ -44,7 +44,16 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
我们看到上面的代码,要编写一个web服务器很简单,只要调用http包的两个函数就可以了。
|
我们看到上面的代码,要编写一个web服务器很简单,只要调用http包的两个函数就可以了。
|
||||||
|
|
||||||
|
>- 如果你以前是PHP程序员,那你也许就会问,我们的nginx、apache服务器不需要吗?Go就是不需要这些,因为他直接就监听tcp端口了,做了nginx做的事情,然后sayhelloName这个其实就是我们写的逻辑函数了,也就是php里面的执行逻辑类似。
|
||||||
|
|
||||||
|
>- 如果你以前是python程序员,那么你一定听说过tornado,这个代码和他是不是很像,对,没错,go就是拥有类似python这样动态语言的特性,写web应用很方便。
|
||||||
|
|
||||||
|
>- 如果你以前是ruby程序员,那么和ROR的/script/server启动有点类似。
|
||||||
|
|
||||||
|
我们看到我们通过简单的几行代码就已经运行起来一个web服务了,而且这个web服务内部已经支持了高并发的特性,我将会在接下来的两个小节里面详细的讲解一下go是如何实现web高并发的。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user