1.用Golang 撸了一个Http 服务,同时用PHP 的Swoole拓展也撸了一个Http服务。压测测试其两个性能的比较。(编译的语言VS 弱类型解释型语言,结果大概是3:1)
swoole 实现的http 测试结果
Go 实现的额http 测试结果
2.Go语言仅支持封装,不支持多继承(面向接口编程)
3.声明数组是要先声明其空间大小的,也可声明可拓展数组,一般不使用数组,使用切片,map 数据结构比较多。
4.切片是数组的一种视图,本身不存数据,可以向后拓展,切片的区间截取是半开闭的,左边是开,右边是闭。数组可以被叫做切片的底层数组,而切片也可以被看作是对数组的某个连续片段的引用。
5.所有能被引用的包,必须放在 GOPATH 的src 目录之下。一个目录只能有一个包,一个包可以分为多个文件。
6.go get 可以获取github 上面的包,但是获取不到的golang.org上面的包。但是的可以通过安装 gopm 来解决这个问题。
7.Runtime包中提供了几个与goroutine有关的函数。Gosched()让当前正在执行的goroutine放弃 CPU 执行权限。调度器安排其它正在等待的线程运行。
8.Golang 编程中,实例化了没有被使用的变量,导入没有使用的包,都会导致编译不通过的。
9.没有public private 等标识符号,Go里面使用 首字母的大小写来区分属性的公开和私有。
10.方法或者内置属性可以返回多个变量,也可以定义返回值的类型
代码例子:
m := map[string]string{"name": "吴彦祖","age": "43","adress": "香港",}if name, ok := m["name2"]; ok {fmt.Println(name)} else {fmt.Println("值不存在")}
11.方法的参数可以是 值传递也可以是地址传递。值传递不会改变的 主体本身,地址传递会改变本身的类型。
12.传统面向对象类的概念,在Golang是通过结构体的构建来实现的,继承的方式,改用组合的形式。