Go优点
自带gc。
静态编译,编译好后,扔服务器直接运行。
简单的思想,没有继承,多态,类等。
特征
1.自动立即回收。
2.更丰富的内置类型。
3.函数多返回值。
4.错误处理。
5.匿名函数和闭包。
6.类型和接口。
7.并发编程。
8.反射。
9.语言交互性。
Go命名规则
Go的函数、变量、常量、自定义类型、包(package)的命名方式如下:
1 首字符可以是任意的Unicode字符或者下划线
2 余字符可以是Unicode字符、下划线、数字
3 字符长度不限
25个关键字,37个保留字(具体可以网上去查)
可见性
1 声明在函数内部,是函数的本地值,类似private
2 声明在函数外部,是对当前包可见(包内所有.go文件都可见)的全局值,类似protect
3 声明在函数外部且首字母大写是所有包可见的全局值,类似public
Go声明
四种声明方式:
1 var(声明变量)
2 const(声明常量)
3 type(声明类型)
4 func(声明函数)
注:文件的第一行就是package XXX声明,用来说明该文件属于哪个包(package),package声明下来就是import声明,再下来是类型,变量,常量,函数的声明
Go的构建和编译
Go工程包含下面三个目录:
src 源代码文件
pkg 包文件
bin 相关bin文件
golang的编译使用命令 go build , go install(除非只写一个main函数)
GOPATH=工程根目录;其下应创建src,pkg,bin目录,bin目录中用于生成可执行文件, pkg目录中用于生成.a文件; golang中的import name,实际是到GOPATH中去寻找name.a, 使用时是该name.a的源码中生命的package 名字
注:
1.系统编译时 go install abc_name时,系统会到GOPATH的src目录中寻找abc_name目录,然后编译其下的go文件
2.同一个目录中所有的go文件的package声明必须相同,所以main方法要单独放一个文件,否则在eclipse和liteide中都会报错
编译报错如下:(假设test目录中有个main.go 和mymath.go,其中main.go声明package为main,mymath.go声明packag 为test);
3.对于main方法,只能在bin目录下运行 go build path_tomain.go; 可以用-o参数指出输出文件名;
4.可以添加参数 go build -gcflags “-N -l” ****,可以更好的便于gdb;详细参见 http://golang.org/doc/gdb
5.如有全局变量 a;则应写为 p ‘main.a’;注意但引号不可少;