Go语言就业指南 岳东卫 技术总监 讲师的CSDN博客地址 http://blog.csdn.net/yue7603835
Go语言特性讲解 1、go的垃圾回收机制 下面这一段C++语言代码,只申请内存,但不释放, 会出现内存不停泄露,泄漏到一定时候windows下就是直接崩溃、或者程序直接假死,或者程序出现莫名其妙的错误及其不容易排查。 int main(){ for(;;){ int*p= new int[1024]; //delete p; } return 0; 在没使用智能指针的情况下,C++中需要我们手动delete 来释放不用的内存。 go语言在语言级别支持了类似java的的垃圾回收机制,保证自动定期对垃圾内存进行回收,我们不用关心内存泄露的问题 ,Go的垃圾回收机制依赖于复杂的垃圾回收算法支撑。
Go语言特性讲解 2、语言级别的并发 ,语言级别支持协程。 协程是一种轻量线程,用户态的线程,不直接受操作系统调度,相比传统进程、线程要轻量很多,所以很容易模拟出大量并发,并且go在语言级别添加了协程 ,这也就是为什么说go在语言级别支持并发。 func work(){ //block //balabala….... } go work(); 。 goroutine goroutine goroutine 主协程 goroutine goroutine goroutine 多个协程之间可以通过channel进行通信。
Go语言特性讲解 3、匿名函数闭包 闭包函数是由匿名函数和与其相关的引用环境组合而成的实体,比如Closure函数返回的闭包函数就能引用Closure函数中的变量i,这个变量i在内存中常驻,就好像我们C的函数中的static变量一样,此时这个变量i的生命周期将脱离Closure函数调用堆栈,存储于全局数据区。 func Closure() func()int{ i:=0 return func()int{ i++ return i } 。
Go语言特性讲解 4、非入侵式接口,耦合度低 Go非入侵接口 。 Go非入侵接口 type Codecer interface{ Decode() bool Encode() bool } type Codec struc{} func (p*Codec)Decode() bool { func (p*Codec)Encode() bool { var codec Codecer=&Codec{} C++接口实现 class ICodec { public: virtual bool Decode()=0; virtual bool Encode()=0; }; class CodecImpl: public Icodec{ public: virtual bool Decode(){} virtual bool Encode(){} }; Icodec*p=new CodecImpl
Go语言特性讲解 5、Cgo 通过Cgo可以支持go与c/c++混合开发,就类似java的JNI技术一样。 6、反射 。
Go语言特性讲解 6、反射 反射是一种元数据编程,指的是程序可以获得自身结构的一种能力,就如同java的反射一样。 下面这段代码我们通过反射获取变量x的类型 ,结果是 float64 package main import ( "fmt" "reflect" ) func main() { var x float64 = 1.0 fmt.Println("type:", reflect.TypeOf(x)) } 。
Go语言特性讲解 7、函数的多返回值 func funcTemplate()(Type1,Type2,Type3,….TypeN){ return v1,v2,v3,…,vN } 除了Python外,C/C++ 、java、PHP等编程语言中都是不支持多返回值的 func getUserInfo()(string,string,string){ return “zhangsan”,”15”,”china” //获取函数的多返回值 Name,age,country:=getUserinfo() //也可以通过_忽略相应的返回值 _,_,country:=getUserInfo() 。
Go语言特性讲解 8、跨平台支持 Golang支持交叉编译,也就是说你在32位平台的机器上开发,可以编译生成64位平台上的可 执行程序,你也可以在windows下编译linux运行所需要的目标文件,但是不支持Cgo的交叉编译 。 交叉编译依赖下面几个环境变量: GOARCH 目标平台(编译后的目标平台)的处理器架构(386、amd64、arm) GOOS 目标平台(编译后的目标平台)的操作系统(darwin、freebsd、linux、windows) 各平台的GOOS和GOARCH参考 OS ARCH OS version linux 386 / amd64 / arm >= Linux 2.6 darwin 386 / amd64 OS X (Snow Leopard + Lion) freebsd 386 / amd64 >= FreeBSD 7 windows 386 / amd64 >= Windows 2000
THANKS 本课程由 岳东卫 提供 CSDN网站:www.csdn.net 企业服务:http://ems.csdn.net/ 人才服务:http://job.csdn.net/ CTO俱乐部:http://cto.csdn.net/ 高校俱乐部:http://student.csdn.net/ 程序员杂志:http://programmer.csdn.net/ CODE平台:https://code.csdn.net/ 项目外包:http://www.csto.com/ CSDN博客:http://blog.csdn.net/ CSDN论坛:http://bbs.csdn.net/ CSDN下载:http://download.csdn.net/