极客大学Go 进阶训练营

极客大学Go 进阶训练营,第1张

概述极客大学Go进阶训练营\/itspcool交流学习Go语言是google推出的一个静态编译型语言,目标是取代C、C++、Java作为系统开发的语言。开发者很多都是来自贝尔实验室的大神。Go语言包含了很多非常酷的语言特性,值得尝试。目前Google、盛大、金山、百度等公司已经开始使用Go语言开 极客大学Go 进阶训练营

\/ itspcool 交流学习

Go语言是Google推出的一个静态编译型语言,目标是取代C、C++、Java作为系统开发的语言。开发者很多都是来自贝尔实验室的大神。Go语言包含了很多非常酷的语言特性,值得尝试。

目前Google、盛大、金山、百度等公司已经开始使用Go语言开发系统模块了。本文重点介绍下Go语言区别于一般语言的特性。其他语言,比如内置数据结构,内存管理,闭包,反射等共有的特性就不说了,Go语言全部都有。

绝大多数的云原生项目都是用 Go 语言编写的,比如 Docker、etcd、Istio、Kubernetes、Prometheus;
Go 将会成为云计算时代的基础设施编程语言,比如区块链明星项目 Hyperledger、Newsql 明星项目 TIDB 都是基于 Go 的;
Go 已经成为下一个企业级编程语言,包括字节跳动、滴滴、腾讯、阿里巴巴在内的很多公司都已经在大规模使用 Go。

语言级别的原生并发机制:goroutine

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 进阶训练营所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1247384.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存