修复strcut错别字,针对web开发不同语言开发者的类比

This commit is contained in:
xiemengjun
2012-09-04 23:13:25 +08:00
parent 97d9ec5cc6
commit 219a476db1
2 changed files with 20 additions and 11 deletions

20
2.4.md
View File

@@ -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
View File

@@ -44,7 +44,16 @@
![](images/3.2.goweb.png?raw=true) ![](images/3.2.goweb.png?raw=true)
我们看到上面的代码要编写一个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高并发的。