\/ itspcool 交流学习
Go语言是Google推出的一个静态编译型语言,目标是取代C、C++、Java作为系统开发的语言。开发者很多都是来自贝尔实验室的大神。Go语言包含了很多非常酷的语言特性,值得尝试。
目前Google、盛大、金山、百度等公司已经开始使用Go语言开发系统模块了。本文重点介绍下Go语言区别于一般语言的特性。其他语言,比如内置数据结构,内存管理,闭包,反射等共有的特性就不说了,Go语言全部都有。
绝大多数的云原生项目都是用 Go 语言编写的,比如 Docker、etcd、Istio、Kubernetes、Prometheus;
Go 将会成为云计算时代的基础设施编程语言,比如区块链明星项目 Hyperledger、Newsql 明星项目 TIDB 都是基于 Go 的;
Go 已经成为下一个企业级编程语言,包括字节跳动、滴滴、腾讯、阿里巴巴在内的很多公司都已经在大规模使用 Go。
C/C++、java C#等语言都有并发的库,一般都是对 *** 作系统的线程或进程库做封装,使用很不方便。
比如Pthread线程。
Go语言内建了并发机制,使用非常简单。Go语言会自己调度goroutine。goroutine的实现也很高效,可以同时开启几十万个goroutine,而且goroutine之间互相切换成本很低。
func abc(s sting){ time.Sleep(1); fmt.Println(s);}//普通的串行调用abc(“hello”)//Go语言并行调用go abc(“hello”)
Go语言还提供了远程RPC调用,执行go func() 时甚至可以是分布式调用的。
语言级别的管道通信机制:channel大部分语言都是用共享内存方式进行通信,而Go语言完全使用消息传递来进行通信,安全高效无锁。
channel可以干各种事情,用来做消息传递,管道,缓冲区,mutex等等,还可以配合使用select语法。
ch := make(chan int, 1000)go func(){ time.Sleep(1e9) ch <- 999 //写入数据}num = <- ch //读数据
chan还可以当成参数传递。Go语言还提供了netchan,可以跨越网络实现消息传递。
语言级别的延迟执行特性:defer比如连接MysqL,调用完成后,需要关闭连接一般语言要很小心地考虑加在什么地方。如何处理好异常,比如Java中复杂的final语法。Go语言可以非常轻松的实现,只需要在开始的时候加defer,具体什么时间调用,Go语言会帮你处理。
db.Connect(host, port, db)defer db.Close()…//读取数据库4、语言级别的多返回值特性C/C++、Java、PHP之类语言想要return多个值,需要很复杂的处理。Go语言很简单,语言天然支持。ret1, ret2 = func1()func func1()(ret1 int, ret2 int){ ret1 := 1 ret2 := 2 return ret1, ret2}
7、Go语言可以跟C语言无缝结合
总结以上是内存溢出为你收集整理的极客大学Go 进阶训练营全部内容,希望文章能够帮你解决极客大学Go 进阶训练营所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)