Go语言编程v2.0

Go语言编程v2.0

ID:37826338

大小:386.61 KB

页数:48页

时间:2019-05-31

Go语言编程v2.0_第1页
Go语言编程v2.0_第2页
Go语言编程v2.0_第3页
Go语言编程v2.0_第4页
Go语言编程v2.0_第5页
资源描述:

《Go语言编程v2.0》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、What?Godaddy(去你爹,X)Goahead(去个头,X)Golang(Go语言,YES)12年9月23日星期日2Goahead...12年9月23日星期日3Golangis一个在语言层面实现了并发机制的类C通用型编程语言12年9月23日星期日4WhyGolang?云计算时代,多核化和集群化是趋势传统软件不能充分利用硬件资源传统编程语言多核并发支持比较繁琐生产效率,少即是多12年9月23日星期日5Go前世今生1995BellLabs,Plan9->Inferno(Limbo)2007/09Google's2

2、0%project2008/05Googlefull-timeproject2009/11officiallyannounced2012/03Go1Released12年9月23日星期日6Go语言特性语言层面支持并发编程(go)优雅的错误处理机制(defer)简洁而又强大的面向对象表达(OOP)非侵入式接口(Interface)可扩展(Cgo)12年9月23日星期日7特性(1)Go在语言层面支持并发12年9月23日星期日8普通并发//inJava(简化,用标准库中的线程模拟并发)publicclassMyThread

3、implementsRunnable{Stringarg;publicMyThread(Stringa){arg=a;}publicvoidrun(){//...}publicstaticvoidmain(String[]args){newThread(newMyThread("test")).start();//...}}12年9月23日星期日9Go语言的并发funcrun(argstring){//...}funcmain(){gorun("test")...}12年9月23日星期日10goroutine启动一

4、个异步过程funcfoo(arg1T1,arg2T2){!//...}gofoo(arg1,arg2)12年9月23日星期日11goroutine交互//等待结束funcfoo(arg1T1,arg2T2,donechanbool){!//...!done<-true}done:=make(chanbool)gofoo(arg1,arg2,done)//...<-done//得到结果12年9月23日星期日12CSP没有共享内存,更没有内存锁通信靠channels来传递消息12年9月23日星期日13特性(2)优雅的错

5、误处理机制12年9月23日星期日14Go错误处理范式//文件操作file,err:=os.Open(fileName)iferr!=nil{return}deferfile.Close()…//操作已经打开的f文件//锁操作varmutexsync.Mutex//...mutex.Lock()defermutex.Unlock()...//正常代码12年9月23日星期日15内建error类型typeerrorinterface{Error()string}12年9月23日星期日16普通资源释放//InJavaConnec

6、tionconn=...;try{Statementstmt=...;try{ResultSetrset=...;try{...//正常代码}finally{rset.close();}}finally{stmt.close();}}finally{conn.close();}12年9月23日星期日17Go的资源释放//InGolangconn:=...deferconn.Close()stmt:=...deferstmt.Close()rset:=...deferrset.Close()...//正常代码12年9月23

7、日星期日18特性(3)简洁而又强大的面向对象表达12年9月23日星期日19结构体(Struct)//是类,不只是结构体typeFoostruct{!aint!bstring}func(this*Foo)Bar(arg1T1,arg2T2,...)(out1RetT1,...){!//...}12年9月23日星期日20面向对象typePointstruct{x,yint}func(p*Point)Get()(int,int){//Publicreturnp.x,p.y}func(p*Point)Put(x,yint)

8、{//Publicp.x=xp.y=y}func(p*Point)add(x,yint)int{//privatereturnp.x+p.y}12年9月23日星期日21模拟继承typeYetAnotherPointerstruct{Point//匿名字段zint}func(p*YetAnotherPointer)Get()(int,int,int){retu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。