【云駐共創】Golang從入門到進階
Golang從入門到進階
1. Go語言入門
1.1 簡介
Go語言語法簡單,Go語言保證了既能到達靜態編譯語言的安全和性能,又達到了動態語言開發速度和易維護性,有人形容Go語言:Go = C + Python, 說明Go語言既有C靜態語言程序的運行速度,又能達到Python動態語言的快速開發。Go語言之所以被稱為21世紀的C語言,不僅在于它精簡的語法和高效的開發,更在于它具有原生支持和易于使用的高并發的特性。
與C語言相同的是Go語言也有指針,能直接操作內存。這也就意味著Go的運行速度是很快的。另外Go語言也能原生支持C語言,CGO模塊也大受好評。
附上Go語言基礎知識點思維導圖
作為一款編譯型語言,Go的程序只需要簡單幾行命令就能在windows下打包成二進制文件并上傳到服務器運行,無需安裝第三方的包依賴。并且內置runtime,支持垃圾回收。還有語言層面上支持并發,這個就是Go最大的特色。天生的支持并發,Go就是基因里面支持的并發。
下面兩張圖就很形象說明Go語言的并發。
將線程再分成更細的協程,使得中間等待時候更少,大大提高效率!
所以說,在這個數據量龐大的社會,使用go語言進行并發操作是必備且非常重要的。
1.2 學習資料與網站
Go常用編輯器:
Goland:https://www.jetbrains.com/go/download/
vscode:https://code.visualstudio.com/
Go基礎編程:
Go語言中文文檔:https://studygolang.com/pkgdoc
Go語言菜鳥教程:https://www.runoob.com/go/go-tutorial.html
Go語言基礎教程:https://github.com/quii/learn-go-with-tests
Go Demo:https://gobyexample.com/
Go高級編程:
Go調度器GPM模型:https://www.zhihu.com/question/20862617/answer/27964865**
Go的內存布局:https://golang.org/ref/mem
Go指針高級:http://www.sohu.com/a/168217543_99930294
Go與C混合編程 CGO模塊:https://github.com/golang/go/wiki/cgo
垃圾自動回收機制 GC:https://blog.csdn.net/weixin_45304503/article/details/119729349
channel阻塞機制:https://blog.csdn.net/weixin_45304503/article/details/119359126
入門推薦書籍:
電子書《The Way To Go》:https://github.com/Unknwon/the-way-to-go_ZH_CN
《Go語言核心編程》
《Go語言編程設計》
《Go語言并發編程實戰》
2. Go進階應用
2.1 Web 開發
2.1.2 簡介
在我們學習Go語言的基礎語法之后,我們可以做一個web網站。那我們用go語言的GIN框架來舉例,Gin是一款輕量級的WEB框架。
特點:
封裝優雅,降低入門門檻。
API友好,支持許多出色的中間件。
源碼注釋明確,降低閱讀門檻
快速靈活,容錯方便。
功能概要:
RESTful 路由
數據綁定
jwt,cors等中間件的使用
會話控制
…
附上思維導圖:
做一個web網站,除了需要Gin框架之外,我們還需要GORM框架。
GORM是Golang語言中一款性能極好的ORM庫,Gin框架經常和Gorm搭配使用。
功能概覽:
關聯(Has One, Has Many, Belongs To, Many To Many, 多態)
鉤子函數Hook(在創建/保存/更新/刪除/查找之前或之后)
預加載
事務
復合主鍵
讀寫分離
…
附上思維導圖:
2.1.2 學習資料及網站
Go中文社區:
GIN:
源碼:https://github.com/gin-gonic/gin
中文文檔:https://www.kancloud.cn/shuangdeyu/gin_book/949412
Gin框架知識點總結:https://blog.csdn.net/weixin_45304503/article/details/120381359
GORM:
源碼:https://github.com/go-gorm/gorm
中文文檔:https://learnku.com/docs/gorm/v2
Gorm框架知識點總結:https://blog.csdn.net/weixin_45304503/article/details/119986588
一些基于Gin+Gorm的應用:
Gin+Gorm 電子商場:https://github.com/congz666/cmall-go
Gin+Gorm 視頻彈幕網站:https://github.com/CocaineCong/BiliBili
Gin+WebSocket 聊天室:https://github.com/hezhizheng/go-gin-chat
Gin+Vue+Admin 后臺管理系統:https://github.com/flipped-aurora/gin-vue-admin
推薦書籍:
《Go Web編程》
2.2 微服務
2.2.1 簡介
將應用程序分解成一套較小的互連服務,將單體應用拆分為一系列服務,每個服務都輕量級單獨部署,運行在自己的進程中,共同組件整個系統中。每個服務注重自己的核心能力的開發,微服務組件之間采用輕量級別通信方式進行通信,包括RESTful APi。那Go語言的微服務框架有哪些需要學習的呢?
Protobuf語法 / Protobuf序列化原理
服務發現 / Consul內部原理
節點服務集群
Docker 環境的搭建
RPC 簡介及原理介紹
RPC 與 Protobuf 結合
gRPC 的使用
go-micro 框架的使用
…
2.2.2 學習資料以網站
gRPC:
中文文檔:http://doc.oschina.net/grpc?t=57966
go-micro:
**中文手冊:https://www.kancloud.cn/linimbus/go-micro/529030
推薦書籍:
《Go語言高并發與微服務實戰》
《Go微服務實戰》
2.3 Cloud 云
2.3.1 簡介
如今,我們已迎來了云原生時代,我們所有的web程序,app應用都是在云端運行。而云端就是編譯型語言Go語言的主場。幾行命令,就能快速部署到云端。我們所熟知的容器化工具Docker和編排工具K8S也是基于Go語言的。
對于開發人員來說,容器技術為應用的部署提供了沙盒環境,開發者可以在獨立的容器運行和管理應用程序進程,Docker提供的抽象層使得開發人員之間可以保持開發環境相對的一致,因此Docker適合用于應用隔離,搭建沙箱環境。此外,由于Docker容器的輕量化,它也被適用于進行持續集成和持續部署。
我們用Docker舉例子,容器化技術到底有什么優勢呢?
更高效的利用系統資源
更快速的啟動時間
一致的運行環境
持續交付和部署
更輕松的遷移
更輕松的維護和擴展
Docker的核心架構
我們通常會編寫Dockerfile對鏡像進行build,然后在容器中跑。
鏡像: 一個鏡像代表一個應用環境,他是一個只讀的文件,如 mysql鏡像,golang鏡像,nginx鏡像等
容器: 鏡像每次運行之后就是產生一個容器,就是正在運行的鏡像,特點就是可讀可寫
倉庫:用來存放鏡像的位置,類似于maven倉庫,也是鏡像下載和上傳的位置
dockerFile:docker生成鏡像配置文件,用來書寫自定義鏡像的一些配置
tar:一個對鏡像打包的文件,日后可以還原成鏡像
Dockerfile的解析過程
2.3.2 學習資料及網站
Docker:
官網:https://www.docker.com/
中文文檔:https://www.kancloud.cn/jingyucloud/docker/216412
推薦書籍:
《深入淺出Docker》
《CKA/CKAD應試指南:從Docker到Kubernetes完全攻略》
2.4 BlockChain 區塊鏈
2.4.1 簡介
區塊鏈是一個顛覆舊模式的新技術,是一種按照時間順序將數據區塊以順序相連的方式組合成的一種鏈式數據結構,并以密碼學方式保證的不可篡改和不可偽造的分布式賬本。最近的元宇宙大火,也帶動了區塊鏈的熱度。
區塊鏈應用最為著名的應用就是比特幣,以太坊和超級賬本。其中的以太坊和超級賬本這兩個區塊鏈應用都基于Go語言。
特點:
透明可信
防篡改可追溯
隱私安全保障
系統高可靠性
以太坊的智能合約是solidity,我們可以用Go語言去調用以太坊智能合約。
超級賬本的智能合約是Go語言,Go語言搭建超級賬本Fabric項目的兼容性更好。
以下列舉了以太坊和超級賬本的區別
2.4.2 學習資料及網站
區塊鏈這方面的學習資料相對比較少,建議多看書,多研究以下超級賬本的源碼。因為實際開發應用中,超級賬本fabric是用的最多的。
以太坊:
Go語言調用以太坊:https://blog.csdn.net/weixin_45304503/article/details/119430280
Go語言調用智能合約:https://blog.csdn.net/weixin_45304503/article/details/119466277
超級賬本Fabric:
源碼:https://github.com/hyperledger/fabric
官方文檔:https://hyperledger-fabric.readthedocs.io/en/latest/
區塊鏈推薦書籍:
**《區塊鏈技術及應用》
《Hyperledger Fabric技術內幕》
3. 總結
Go語言未來可期,Go語言的樂趣不止于此,我們一起加油吧!
本文整理自華為云社區內容共創活動:任務29 Go語言如何進階?
查看活動詳情:https://bbs.huaweicloud.com/blogs/308924
Docker Go 區塊鏈 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。