Presentation is loading. Please wait.

Presentation is loading. Please wait.

Go语言就业指南 岳东卫 技术总监 讲师的CSDN博客地址 http://blog.csdn.net/yue7603835.

Similar presentations


Presentation on theme: "Go语言就业指南 岳东卫 技术总监 讲师的CSDN博客地址 http://blog.csdn.net/yue7603835."— Presentation transcript:

1 Go语言就业指南 岳东卫 技术总监 讲师的CSDN博客地址

2 Go语言特性讲解 1、go的垃圾回收机制 下面这一段C++语言代码,只申请内存,但不释放, 会出现内存不停泄露,泄漏到一定时候windows下就是直接崩溃、或者程序直接假死,或者程序出现莫名其妙的错误及其不容易排查。 int main(){ for(;;){ int*p= new int[1024]; //delete p; } return 0; 在没使用智能指针的情况下,C++中需要我们手动delete 来释放不用的内存。 go语言在语言级别支持了类似java的的垃圾回收机制,保证自动定期对垃圾内存进行回收,我们不用关心内存泄露的问题 ,Go的垃圾回收机制依赖于复杂的垃圾回收算法支撑。

3 Go语言特性讲解 2、语言级别的并发 ,语言级别支持协程。
协程是一种轻量线程,用户态的线程,不直接受操作系统调度,相比传统进程、线程要轻量很多,所以很容易模拟出大量并发,并且go在语言级别添加了协程 ,这也就是为什么说go在语言级别支持并发。 func work(){ //block //balabala….... } go work(); goroutine goroutine goroutine 主协程 goroutine goroutine goroutine 多个协程之间可以通过channel进行通信。

4 Go语言特性讲解 3、匿名函数闭包 闭包函数是由匿名函数和与其相关的引用环境组合而成的实体,比如Closure函数返回的闭包函数就能引用Closure函数中的变量i,这个变量i在内存中常驻,就好像我们C的函数中的static变量一样,此时这个变量i的生命周期将脱离Closure函数调用堆栈,存储于全局数据区。 func Closure() func()int{ i:=0 return func()int{ i++ return i }

5 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

6 Go语言特性讲解 5、Cgo 通过Cgo可以支持go与c/c++混合开发,就类似java的JNI技术一样。 6、反射

7 Go语言特性讲解 6、反射 反射是一种元数据编程,指的是程序可以获得自身结构的一种能力,就如同java的反射一样。
下面这段代码我们通过反射获取变量x的类型 ,结果是 float64 package main import ( "fmt" "reflect" ) func main() { var x float64 = 1.0 fmt.Println("type:", reflect.TypeOf(x)) }

8 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()

9 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

10 THANKS 本课程由 岳东卫 提供 CSDN网站:www.csdn.net 企业服务:http://ems.csdn.net/
人才服务: CTO俱乐部: 高校俱乐部: 程序员杂志: CODE平台: 项目外包: CSDN博客: CSDN论坛: CSDN下载:


Download ppt "Go语言就业指南 岳东卫 技术总监 讲师的CSDN博客地址 http://blog.csdn.net/yue7603835."

Similar presentations


Ads by Google