go(又稱golang)是google的三位大牛羅伯特·格瑞史莫(Robert Griesemer), 羅勃·派克(Rob Pike)及肯·湯普遜(Ken Thompson)在2009年推出的編程語(yǔ)言,它是一種靜態(tài)強(qiáng)類型、編譯型、并發(fā)型,并具有垃圾回收功能的編程語(yǔ)言,很方便的支持協(xié)程,支持大并發(fā)。在后端開發(fā),微服務(wù),云計(jì)算方面應(yīng)用比較廣泛,目前國(guó)內(nèi)很多一線互聯(lián)網(wǎng)公司的服務(wù)都是用golang搭建,學(xué)好golang是很前途的。
![]()
我認(rèn)為學(xué)好golang有如下三步驟:
1、閱讀相關(guān)技術(shù)書籍
1)go語(yǔ)言程序設(shè)計(jì)(艾倫A. A. 多諾萬著),golang語(yǔ)言基礎(chǔ),是入門首選
2)go語(yǔ)言圣經(jīng)(Kernighan著),golang語(yǔ)言的權(quán)威著作,進(jìn)階首選
3)golang的官方文檔(https://golang.org/pkg/)
4)golang大牛的演講和blog()
2、參與開發(fā)相關(guān)golang項(xiàng)目
1)開始學(xué)習(xí)時(shí),要邊看書變學(xué)習(xí),將書中的例子一定自己動(dòng)手寫一遍,運(yùn)行調(diào)試一下。
2)邊做項(xiàng)目邊學(xué)習(xí)是成長(zhǎng)最快的方法,一定要參與golang項(xiàng)目的開發(fā),你的工作一定要是golang開發(fā)。
3、學(xué)習(xí)和參與優(yōu)秀的開源項(xiàng)目
閱讀優(yōu)秀開源項(xiàng)目提升自己的技術(shù)水平和開闊一些視野
1)beego (https://github.com/astaxie/beego)
國(guó)產(chǎn)開源的高性能Web框架,讓你快速的開發(fā)Go Web應(yīng)用服務(wù),謝大主筆
2)codis (https://github.com/CodisLabs/codis)
Codis是一個(gè)分布式Redis解決方案,其實(shí)就是一個(gè)數(shù)據(jù)庫(kù)代理,讓你在使用Redis集群的時(shí)候,就像使用單機(jī)版的Redis是一樣的,對(duì)開發(fā)者透明。
3)docker (https://github.com/docker/docker)
無人不知的虛擬華平臺(tái),開源的應(yīng)用容器引擎,借助該引擎,開發(fā)者可以打包他們的應(yīng)用,移植到任何平臺(tái)上。
![]()
4)kubernetes (https://github.com/kubernetes/kubernetes)
Google出品,用于調(diào)度和管理Docker的開源容器管理系統(tǒng),利用他,可以方便的管理你的docker實(shí)例,哪怕非常多,也是目前最流行的docker管理系統(tǒng)。
![]()
5)golang (https://github.com/golang/go)
golang是開源的編程語(yǔ)言,可以閱讀golang的源碼提升自己
4、總結(jié)
經(jīng)常總結(jié),讓經(jīng)驗(yàn)沉淀下來,有條件可以寫博客,也經(jīng)??纯磩e人的技術(shù)博客
以下是我為星球『Go項(xiàng)目實(shí)戰(zhàn)』用戶整理的新手如何學(xué)習(xí)Go語(yǔ)言的資源,分享給你。
學(xué)習(xí)任何東西,基礎(chǔ)都很重要?;A(chǔ)就好比建筑的地基,只有地基牢固了,才能建成高樓大廈。
學(xué)習(xí)編程語(yǔ)言亦是如此。很多人喜歡一上來就學(xué)習(xí)各種框架,其實(shí)那些框架對(duì)你來說都是工具,你自己的基礎(chǔ)好,懂得了它們的原理,自己也有能力創(chuàng)造更優(yōu)秀的框架。
新手學(xué)習(xí) Go 語(yǔ)言,推薦學(xué)習(xí)如下資源:(推薦按順序?qū)W習(xí))
1. 官方文檔。(英文好的可以看英文 http://docs.studygolang.com 或者看如下列出的中文翻譯版)有四個(gè)文檔推薦閱讀:
- 1. Go 語(yǔ)言之旅 http://tour.studygolang.com/
- 2. 語(yǔ)言規(guī)范 http://docscn.studygolang.com/ref/spec.old
- 3. Effective Go http://docscn.studygolang.com/doc/effective_go.html
- 4. FAQ http://docscn.studygolang.com/doc/faq
2. 接著看 《Go 語(yǔ)言圣經(jīng)》中文版 https://books.studygolang.com/gopl-zh/ ,相信對(duì) Go 語(yǔ)言基礎(chǔ)會(huì)有更深的理解。
3. 再推薦的是《Go 語(yǔ)言實(shí)戰(zhàn)》這本書,In Action系列都是比較經(jīng)典的。
以上資料學(xué)習(xí)完后,你應(yīng)該掌握了 Go 語(yǔ)言,但需要進(jìn)行必要的實(shí)戰(zhàn)。我們的 『Go項(xiàng)目實(shí)戰(zhàn)』 知識(shí)星球目標(biāo)之一就是為了鞏固、加深對(duì)基礎(chǔ)知識(shí)的掌握。4. 基礎(chǔ)知識(shí)扎實(shí)了,想進(jìn)一步深入,可以學(xué)習(xí)如下書籍:
- 1. 柴大的 《Go 語(yǔ)言高級(jí)編程》 https://books.studygolang.com/advanced-go-programming-book/
- 2. 雨痕的 《Go 語(yǔ)言學(xué)習(xí)筆記》 https://github.com/qyuhen/book
實(shí)踐出真知,通過gobyexample這樣的文檔一步步去學(xué)習(xí),基本上敲一遍能夠入門了。然后接下來就是自己做一個(gè)小項(xiàng)目,可以從自己最拿手的領(lǐng)域做起,多看多寫,時(shí)間沉淀久了自然就會(huì)了。
Go語(yǔ)言這幾年發(fā)展的確實(shí)不錯(cuò),雖然沒有實(shí)現(xiàn)趕超C++的目標(biāo),但是已經(jīng)很接近了。而這些年也出現(xiàn)了一些Go語(yǔ)言的有名的項(xiàng)目,比如 kubernetes、Docker、Etcd、Tidb等項(xiàng)目。
我這里整理了一份關(guān)于Go語(yǔ)言的學(xué)習(xí)路線,也可以輔助你做判斷。
Go語(yǔ)言是一門全新的靜態(tài)類型開發(fā)語(yǔ)言,具有自動(dòng)垃圾回收、豐富的內(nèi)置類型、函數(shù)多返回值、錯(cuò)誤處理、匿名函數(shù)、并發(fā)編程、反射、defer等關(guān)鍵特征。從語(yǔ)言層面來說天然支持并發(fā),可以充分利用CPU多核,并且非常適合用來進(jìn)行服務(wù)器編程、網(wǎng)絡(luò)編程和分布式編程等。
在云計(jì)算領(lǐng)域,用Go語(yǔ)言編寫的云基礎(chǔ)項(xiàng)目如Docker、Kubernetes都取得了巨大的成功,別外還有知名的項(xiàng)目如Etcd、consul、flannel等,也都是使用Go語(yǔ)言實(shí)現(xiàn)的。
為你提供幾張學(xué)習(xí)Go語(yǔ)言的線路圖,從基礎(chǔ)到進(jìn)階、Web編程、微服務(wù)的學(xué)習(xí),你可以參考一下。
基礎(chǔ)學(xué)習(xí)
書籍推薦
《Head First Go語(yǔ)言程序設(shè)計(jì)》、《Go語(yǔ)言學(xué)習(xí)筆記》、《Go語(yǔ)言趣學(xué)指南》、《Go語(yǔ)言編程》
當(dāng)然,不必所有的書都讀,找其中一本學(xué)習(xí)即可。
在線學(xué)習(xí)Go語(yǔ)言資料
- Go By Example 中文版 : https://gobyexample-cn.github.io,使用代碼示例來學(xué)習(xí) Go 語(yǔ)言。
- Go 面試題 : http://www.topgoer.cn/docs/gomianshiti/mianshiti,也是使用代碼示例來講解 Go,用來準(zhǔn)備面試也是很好的。
- 無聞大佬的在線入門指南 : https://github.com/unknwon/the-way-to-go_ZH_CN
- 跟著單元測(cè)試學(xué)習(xí) Go : https://github.com/quii/learn-go-with-tests,有中文版。
初級(jí)練手項(xiàng)目
- starcharts : https://github.com/caarlos0/starcharts,項(xiàng)目的功能是生成 Github 上面的項(xiàng)目的 star 趨勢(shì)圖,核心代碼不多,用來練手很合適。
- gorched : https://github.com/zladovan/gorched,使用 Go 寫的一個(gè)小游戲。
- pacgo : https://github.com/danicat/pacgo,也是使用 Go 寫的一個(gè)小游戲,每一步都有詳細(xì)的描述和代碼實(shí)現(xiàn)。
- wechat-go : https://github.com/songtianyi/wechat-go,微信 web 版 API 的 Go 實(shí)現(xiàn),模擬微信網(wǎng)頁(yè)版的登錄/聯(lián)系人/消息收發(fā)等功能。
Go語(yǔ)言進(jìn)階
書籍推薦
《Go程序設(shè)計(jì)語(yǔ)言》、《Go專家編程》、《Go語(yǔ)言高級(jí)編程》、《Go并發(fā)編程》
在線學(xué)習(xí)Go語(yǔ)言資料
1.《Go 語(yǔ)言設(shè)計(jì)與實(shí)現(xiàn)》: https://draveness.me/golang。
2.《Go 語(yǔ)言高級(jí)編程》: https://chai2010.cn/advanced-go-programming-book。
進(jìn)階練手項(xiàng)目
- rosedb : https://github.com/roseduan/rosedb,一個(gè)用 Go 實(shí)現(xiàn)的簡(jiǎn)易高效的 k-v 存儲(chǔ)引擎。
- gochat : https://github.com/LockGit/gochat,一個(gè) Go 語(yǔ)言實(shí)現(xiàn)的輕量級(jí) im 系統(tǒng),對(duì)網(wǎng)絡(luò)方面熟悉或者感興趣的可以看看。
- 7DaysGolang : https://github.com/geektutu/7days-golang,7 天使用 Go 從零實(shí)現(xiàn) web 框架、分布式緩存、ORM 框架,、RPC 框架,代碼量不多,但是質(zhì)量挺不錯(cuò)的
Go Web編程
書籍推薦
《Go Web編程》
在線學(xué)習(xí)資料
可以學(xué)習(xí)下 web 框架 Gin、beego:兩個(gè)框架都比較的流行,選擇其中一個(gè)其實(shí)就可以了,推薦 Gin。官方文檔都有中文,照著 demo 敲一下,了解下怎么處理 HTTP 請(qǐng)求的。
其次還需要掌握一下比較流行的 ORM 框架 Gorm,有官方中文文檔,照著 demo 敲一下基本上兩天就能掌握了,后面遇到不會(huì)的再來查。
Web框架相關(guān)的,基本上看官方文檔就可以了,就不用再去找專門介紹的書籍,沒有比官方文章更正宗的資料了。
除框架之外,你還需要學(xué)會(huì)的是包括但不限于:
- web的邏輯,Http協(xié)議,grpc,session,cookie等這些web的基礎(chǔ)知識(shí)
- 數(shù)據(jù)庫(kù)方面MySQL、Redis、MongoDB等
- 中間件Kafka、Etcd等
- 文件文件處理,XML、JSON、正則等
- 安全與加密,預(yù)防CSRF攻擊、XSS攻擊、SQL注入等,加密解密等
Go Web項(xiàng)目推薦
- gin-vue-admin : https://github.com/flipped-aurora/gin-vue-admin,使用 Gin 框架構(gòu)建的后臺(tái)管理系統(tǒng)。
- ferry : https://github.com/lanyulei/ferry,基于 Gin + Vue + Element UI 前后端分離的工單系統(tǒng)。
- go-admin : https://github.com/go-admin-team/go-admin,Gin + Vue + Element UI 的前后端分離權(quán)限管理系統(tǒng)。
Go 微服務(wù)
目前 Go 在微服務(wù)中的應(yīng)用也比較廣泛,但說實(shí)話,微服務(wù)是一個(gè)太龐大的話題,你不可能把每一個(gè)核心的問題都能夠搞清楚,而且也沒條件,或許只能在公司的具體的微服務(wù)生產(chǎn)環(huán)境中,才能夠?qū)ο嚓P(guān)的概念有更加深刻的體會(huì)。
推薦一本微服務(wù)概述的基礎(chǔ)書籍《微服務(wù)設(shè)計(jì)》、《微服務(wù)架構(gòu)設(shè)計(jì)模式》,可以幫助你理解微服務(wù)的建模、集成、測(cè)試、部署和監(jiān)控的一些基礎(chǔ)知識(shí)。
其次,你可以看一下《Go微服務(wù)實(shí)戰(zhàn)》這本書,看后半部分即可,里面其實(shí)介紹的還是關(guān)于微服務(wù)方面的知識(shí)。
推薦 Go 語(yǔ)言的微服務(wù)框架 GoKit、GoMicro、go-zero、kratos,可以隨便選擇一個(gè),理解其基本的用法、設(shè)計(jì)等等。其中 go-zero 和 kratos 是國(guó)內(nèi)開源的,因此都有比較詳細(xì)的中文文檔。
在線學(xué)習(xí)的資料:
https://ewanvalentine.io/microservices-in-golang-part-1
手把手實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 Go 微服務(wù)項(xiàng)目,你可以通過這個(gè)項(xiàng)目來學(xué)習(xí)微服務(wù)的相關(guān)知識(shí),并且有中文版。
Go語(yǔ)言原理研究
如果你對(duì)Go語(yǔ)言底層原理感興趣的話,可以看下這本書《Go語(yǔ)言底層原理剖析》。
開源項(xiàng)目學(xué)習(xí)
在項(xiàng)目開發(fā)過程中,也會(huì)用到各種開源項(xiàng)目。一開始沒必要直接鉆研源碼,先要學(xué)習(xí)開源項(xiàng)目背景,能解決什么問題,開源作者的項(xiàng)目理念,使用了哪些技術(shù)等等。
這些清楚以后,可以找自己感興趣的技術(shù)點(diǎn)或者模塊去針對(duì)性的學(xué)習(xí),千萬不要想著一開始就想一網(wǎng)打盡式的學(xué)習(xí),沒有針對(duì)性意味著沒有重點(diǎn),沒有重點(diǎn)很大概率就會(huì)白學(xué)或者學(xué)到的就會(huì)很少。
先推薦幾個(gè)經(jīng)典的開源項(xiàng)目供你參考:
- www.docker.com 使用 docker 來做虛擬化
- https://github.com/nsqio/nsq 學(xué)習(xí)消息隊(duì)列,學(xué)習(xí) channel 和分布式
- https://github.com/coreos/etcd分布式應(yīng)用
如果你有自己比較看好的開源項(xiàng)目會(huì)更好,興趣永遠(yuǎn)是前進(jìn)的第一步。
相對(duì)前幾年,Go語(yǔ)言的書籍、教程,各種文章都如雨后春筍一般越來越多,學(xué)習(xí)起來也更加方便,但是同時(shí)也要注意不要過度陷入知識(shí)碎片而無法自拔,最重要的還是要去系統(tǒng)去學(xué)習(xí)一下,針對(duì)性的練習(xí)、實(shí)踐和應(yīng)用。
golang越來越有優(yōu)勢(shì),有什么學(xué)習(xí)路線沒有?
golang學(xué)習(xí)比較簡(jiǎn)單,不過任何一門語(yǔ)言都不是孤立存在的,在這里簡(jiǎn)要說明一下golang開發(fā)的學(xué)習(xí)路線
1.golang基礎(chǔ),包括go語(yǔ)言安裝,go語(yǔ)言語(yǔ)法,流程控制語(yǔ)句,函數(shù),方法,面向?qū)ο蟾拍?,網(wǎng)絡(luò)編程,并發(fā)編程等
2.golang開發(fā)框架,包括beego,gin,Iris,Echo等
3.微服務(wù)開發(fā)
4.深入的話還可以學(xué)習(xí)算法部分。如果要接觸區(qū)塊鏈相關(guān)技術(shù)的話,還需要學(xué)習(xí)區(qū)塊鏈的加密算法等相關(guān)知識(shí)
5.如果要結(jié)合go實(shí)現(xiàn)應(yīng)用的話,肯定離不開各種數(shù)據(jù)庫(kù),比如關(guān)系型數(shù)據(jù)庫(kù)oracle、mysql,或者各類非關(guān)系型數(shù)據(jù)庫(kù)等等
6.如果需要開發(fā)界面的話,還需要學(xué)習(xí)網(wǎng)頁(yè)編程如html,javascript,vue,elementUI,bootstrap等網(wǎng)頁(yè)開發(fā)技術(shù)和框架。
7.在以上學(xué)習(xí)的基礎(chǔ)上還可以向架構(gòu)方面深入學(xué)習(xí)。
鏈喬教育在線祝您學(xué)有所成。
非常好的問題。首先我是有三年go語(yǔ)言開發(fā)經(jīng)驗(yàn)的了?;卮鹉氵@個(gè)問題之前,首先要理解如何學(xué)習(xí)go,是你要達(dá)到什么樣的級(jí)別。就是目標(biāo),比如你要達(dá)到大師級(jí)別?;蛘吣阈枰胓o做什么開發(fā)工作?一定要先搞清楚需求,舉個(gè)例子
1 我要如何學(xué)習(xí)go才能做web開發(fā)
2用go做ai 或者圖像處理
3開發(fā)以太坊區(qū)塊鏈
就web開發(fā)而言的話就不同領(lǐng)域需要畫一個(gè)腦圖,就是路線圖,把達(dá)到目標(biāo)之前的各個(gè)知識(shí)點(diǎn)列出來,比如基礎(chǔ)go知識(shí),變量,常量,slice. map struct channel go routine 并發(fā)等等 還有相關(guān)領(lǐng)域的開發(fā)工具,的腦圖,比如goland vs code 還要需要的linux 命令行, dockers 等等相關(guān)路線圖 還有g(shù)in 框架
但是如果要學(xué)圖像 ai 區(qū)塊鏈還要學(xué)習(xí)相關(guān)基礎(chǔ)和框架,比如tensorflow 智能合約 opencv 如果只要學(xué)習(xí)基礎(chǔ)請(qǐng)關(guān)注我的頭條14天學(xué)會(huì)go語(yǔ)言,最重要的是要多練!謝謝
5月20日工業(yè)和信息化部信息中心發(fā)布《2018中國(guó)區(qū)塊鏈產(chǎn)業(yè)白皮書》,Go語(yǔ)言與區(qū)塊鏈成為“數(shù)字中國(guó)”建設(shè)的重要支撐,go語(yǔ)言由此被提起!
Go語(yǔ)言熱度攀升,市場(chǎng)薪資居高不下
據(jù)BOSS直聘研究院數(shù)據(jù)顯示2018年Go語(yǔ)言與區(qū)塊鏈職位月薪11000元以上占整體的95.5%
為什么Go語(yǔ)言被眾多名企青睞?
區(qū)塊鏈主流編程語(yǔ)言
簡(jiǎn)單易學(xué)開發(fā)速度快
Go語(yǔ)言并發(fā)性好
如何學(xué)習(xí)GO語(yǔ)言:
可以到黑馬程序員看一下這些GO語(yǔ)言的教程哦!也可以后臺(tái)回復(fù):go語(yǔ)言
對(duì)于初學(xué)一門語(yǔ)言的同學(xué),一般會(huì)推薦一本經(jīng)典入門書籍。按照慣例go語(yǔ)言我推薦《go語(yǔ)言圣經(jīng)》。
書只是一方面。在學(xué)習(xí)習(xí)慣上,本人還是習(xí)慣帶著問題去學(xué)習(xí)。何為帶著問題學(xué)習(xí)呢?首先,要想想學(xué)習(xí)go語(yǔ)言的目的是什么?選個(gè)開發(fā)項(xiàng)目來練手,邊學(xué)邊做,帶著問題有目的的學(xué)習(xí)語(yǔ)言 效率會(huì)很高。
當(dāng)然,如果之前沒接觸過編程,可能前期需要看看入門的視頻和實(shí)例,按照指導(dǎo)一步一步跟著動(dòng)手實(shí)驗(yàn)。
總的來說,多動(dòng)手,多想多總結(jié),然后帶著問題學(xué)習(xí),學(xué)習(xí)效率應(yīng)該很高了。
(圖文無關(guān))
go語(yǔ)言語(yǔ)法簡(jiǎn)單,有編程基礎(chǔ)的學(xué)起來不困難,上手很快的。語(yǔ)法弄明白之后就是他的數(shù)據(jù)類型,已經(jīng)go語(yǔ)言的OOP。有了一定基礎(chǔ)之后可以看一些開源項(xiàng)目的源碼,幫助很大的。之后自己可以動(dòng)手寫一下小的項(xiàng)目,網(wǎng)絡(luò)編程的聊天室等等。其實(shí)go可以說的上是拿過來就可以用的語(yǔ)言,所以學(xué)習(xí)不要有壓力,多看看視頻,多動(dòng)手。
如何學(xué)習(xí)Go語(yǔ)言?再回答這個(gè)問題之前,我們首先要想明白,自己為什么學(xué)習(xí)Go語(yǔ)言?在我看來,Go語(yǔ)言之所有越來越受到開發(fā)者的歡迎,與其超高的實(shí)用價(jià)值密不可分。
要知道Go語(yǔ)言是為了解決現(xiàn)實(shí)問題而設(shè)計(jì)的,而不是為了學(xué)術(shù)理論和人工智能思想。Go是一個(gè)務(wù)實(shí)的編程語(yǔ)言,對(duì)于寫一個(gè)充分利用并發(fā)的高效軟件系統(tǒng),Go的構(gòu)建并發(fā)功能給予你一個(gè)令人興奮的編程體驗(yàn)。加之部署簡(jiǎn)單、并發(fā)性好、性能好這些語(yǔ)言本身的特性,使得Go語(yǔ)言獲得了很多編程愛好者的好感。
Go語(yǔ)言的廣泛應(yīng)用
- Go可以用來構(gòu)建一般目的的編程語(yǔ)言,可以是用Go編寫許多形態(tài)各異的軟件系統(tǒng),包括網(wǎng)絡(luò)服務(wù)器,系統(tǒng)級(jí)別的應(yīng)用程序,圖形系統(tǒng),物聯(lián)網(wǎng)和機(jī)器學(xué)習(xí)。
- Go語(yǔ)言能夠用于構(gòu)建本地化的手機(jī)應(yīng)用程序,越來越多的公司將會(huì)為本地的Android和iOS系統(tǒng)上構(gòu)建應(yīng)用程序。
- Go是構(gòu)建Web應(yīng)用和后端API的最佳選擇??梢灶A(yù)見,在后續(xù)的幾年里,會(huì)有越來越多的企業(yè)使用Go構(gòu)建后端的RESTful 系統(tǒng)或者現(xiàn)代化商業(yè)應(yīng)用系統(tǒng)。
如何學(xué)習(xí)Go語(yǔ)言?
最后大家分享一下區(qū)塊鏈學(xué)習(xí)線路圖~希望對(duì)大家學(xué)習(xí)有幫助
有需要區(qū)塊鏈視頻教程的小伙伴可以私信我免費(fèi)獲取~先來看看什么是go語(yǔ)言:
Go語(yǔ)言是谷歌2009發(fā)布的第二款開源編程語(yǔ)言。
Go語(yǔ)言專門針對(duì)多處理器系統(tǒng)應(yīng)用程序的編程進(jìn)行了優(yōu)化,使用Go編譯的程序可以媲美C或C++代碼的速度,而且更加安全、支持并行進(jìn)程。學(xué)習(xí)編程語(yǔ)言,主要的需要做到三點(diǎn):
基礎(chǔ)知識(shí)要學(xué)好。
學(xué)會(huì)抄代碼,直到自己能倒寫如流!
學(xué)會(huì)自己寫代碼,只有自己會(huì)寫代碼了,才是真正的學(xué)會(huì)了!
基礎(chǔ)知識(shí)要學(xué)好
都說“欲速則不達(dá)”,么有扎實(shí)的基本功,怎么能更好的學(xué)習(xí)!就像建房子,首先要有地基,之后才能往上蓋,這樣就不會(huì)坍塌!
推薦入門視頻:20小時(shí)快速入門go語(yǔ)言
學(xué)會(huì)抄代碼
當(dāng)你把基礎(chǔ)學(xué)完之后,要想更好的掌握,就可以考慮抄代碼了!我們開始寫代碼都是沒什么思路,也無從下手,但是我們可以模仿別人寫代碼,上海俗話里面常說"吃大戶,用大戶,消滅大戶",我們就是"看代碼,抄代碼,最后自己寫代碼"
自己寫代碼
當(dāng)你可以寫代碼的時(shí)候,就說明對(duì)GO有了很好的了解,這時(shí)候就要自己做項(xiàng)目了。
關(guān)于學(xué)習(xí)視頻,樓樓可以找我要哦,關(guān)于對(duì)GO學(xué)習(xí),大家也可踴躍參加,歡迎指正批評(píng)!
初學(xué)者第一步是跑通一個(gè)helloworld程序。第二步是把官方的Go tour在線教程走一遍。第三步就是結(jié)合我們翻譯的《Go語(yǔ)言圣經(jīng)》和官方文檔實(shí)戰(zhàn)練習(xí)。如果還想深入了解特定方向,可以找相關(guān)的資料。比如cgo或Go匯編語(yǔ)言可以參考我的《Go語(yǔ)言高級(jí)編程》。同時(shí)我們的“光谷碼農(nóng)”微信公眾號(hào)也提供了諸多Go語(yǔ)言原創(chuàng)有深度的技術(shù)文章。
還是那句話,編程語(yǔ)言的選擇要看使用場(chǎng)景。
先看菜鳥教程,go語(yǔ)言的入門教程。
Go 語(yǔ)言教程 | 菜鳥教程 (runoob.com)
現(xiàn)在真是各種培訓(xùn)機(jī)構(gòu)各種自問自答啊。然后還自己個(gè)自己點(diǎn)贊,真是厲害了!好我們回到正題,如何學(xué)習(xí)go語(yǔ)言。
其實(shí)go語(yǔ)言學(xué)習(xí)成本還是有的,第一google我們不能夠正常訪問,所以按照golang就不能去官方進(jìn)行按照,當(dāng)然我們有梯子的同學(xué)是可以直接進(jìn)行訪問golang官網(wǎng)的。
我們按照好golang之后就可以編寫hello world了,go語(yǔ)言是一門上手非常快的語(yǔ)言,沒有任何變成基礎(chǔ)的也不害怕,如果有C語(yǔ)言或者是python、php語(yǔ)言會(huì)更加好上手。
和學(xué)習(xí)正常語(yǔ)言一樣,我們要先學(xué)習(xí)基礎(chǔ),我們可以去看視頻,也可以去看相關(guān)的數(shù)據(jù),入門的視頻或者數(shù)據(jù)有的是,隨便都可以在網(wǎng)上搜索的到,到時(shí)候大家先熟悉一波基礎(chǔ)的語(yǔ)法。
接下來就是實(shí)戰(zhàn)了,用golang為我們解決一些事情,這些事情是真是存在的,那golang可以做什么呢,高性能的服務(wù)器API接口開發(fā),高性能的即時(shí)通訊服務(wù)器如IM、游戲服務(wù)器,還可以進(jìn)行嵌入式開發(fā),因?yàn)間olang是直接打包成二進(jìn)制運(yùn)行文件的,并且也可以用c、c++語(yǔ)言和go進(jìn)行混合開發(fā)。
接下來就是基本的web rest框架如 gin、iris、begoo、echo、fasthttp等
常用的數(shù)據(jù)庫(kù)操作mysql、redis、mongo
一些基礎(chǔ)中間件操作如、es、mq、隊(duì)列
對(duì)接常用第三方、如支付、和公眾號(hào)開發(fā)、小程序?qū)?/p>
websock、socket編程
此外我們應(yīng)該多去github去流量高質(zhì)量的代碼,有意思的項(xiàng)目等等。
最后多敲,多寫才是王道!
如果你有c或java的經(jīng)驗(yàn),你會(huì)發(fā)現(xiàn)go可能是目前語(yǔ)言中最容易進(jìn)入項(xiàng)目階段的語(yǔ)言。go語(yǔ)言的語(yǔ)法特性簡(jiǎn)單明了,但枯燥乏味。做項(xiàng)目千篇一律,但只要遵循規(guī)則,即使新手也不會(huì)有太多坑,簡(jiǎn)單說就是實(shí)惠耐用,這簡(jiǎn)直就是大多it男的特性的翻版。所以對(duì)go來說,真不需要糾結(jié),找本書了解下語(yǔ)法,找個(gè)相應(yīng)框架,直接上手,邊做邊學(xué)。go的編譯,發(fā)布也可以說是傻瓜式,不需要額外的學(xué)習(xí)知識(shí),交叉編譯對(duì)開發(fā)與發(fā)布環(huán)境不同的程序員來說更是減負(fù)利器。而相對(duì)應(yīng)的,作為一個(gè)有c和java多年經(jīng)驗(yàn)的民工,rust學(xué)習(xí)曲線要陡峭上太多。就工作工具來說,我推薦go。作為以網(wǎng)站應(yīng)用為主的,當(dāng)然還要給elixir做下廣告,它的語(yǔ)法和go是兩個(gè)極端,同樣簡(jiǎn)單易學(xué),但超級(jí)靈活充滿魔法感??上腔趀rl虛擬機(jī),在某些場(chǎng)景下沒有g(shù)o這么強(qiáng)的普適性。
網(wǎng)上教程一大把,看完多寫代碼實(shí)踐
按照下面這個(gè)圖譜,
step1:先學(xué)基本語(yǔ)法,然后學(xué)語(yǔ)法進(jìn)階。
step2:接下來網(wǎng)絡(luò)編程,web開發(fā)。
step3:框架,和項(xiàng)目實(shí)戰(zhàn)。開始也不用找太大的項(xiàng)目,能把之前的知識(shí)點(diǎn)串成線就行。
step4:如果還想往深了學(xué),就看看容器,如今聲名大噪的Docker,分布式,微服務(wù)等。。
學(xué)習(xí)一門新語(yǔ)言或者新技巧有一個(gè)基本的流程。首先你得知道新語(yǔ)言是什么,能干什么。這個(gè)部分你可以在網(wǎng)上找到入門教程視頻,這個(gè)時(shí)候不要細(xì)看,可以快速瀏覽這么語(yǔ)言的語(yǔ)法,能干什么,優(yōu)勢(shì)是啥,缺點(diǎn)是什么,確保是你喜歡或者需要的語(yǔ)言,這樣子可以快速做出判斷和選擇學(xué)或者不學(xué)。如果要學(xué),接下來就是認(rèn)認(rèn)真真仔仔細(xì)細(xì)看下官方參考手冊(cè),這種文檔通常都是最權(quán)威的教程。這個(gè)過程是讓你努力記住這門語(yǔ)言的語(yǔ)法和使用方法,是短時(shí)記憶。最后一步就是在工作中使用這門語(yǔ)言或者技術(shù),這個(gè)時(shí)候讓你的短時(shí)記憶變長(zhǎng)時(shí)記憶。
附帶說明一下類似go語(yǔ)言這樣,官方包還有大牛包都是源碼的,這些會(huì)是我們最好的學(xué)習(xí)對(duì)象。
1. 需要把其基礎(chǔ)知識(shí)看一兩遍,包括語(yǔ)法,要素
做工程師都至少了掌握了一門編程語(yǔ)言的,有幾年經(jīng)驗(yàn)的怎么也會(huì)掌握2門以上的開發(fā)語(yǔ)言,并且是至少有一門語(yǔ)言是自己比較熟悉的。
這是因?yàn)閷?duì)編程語(yǔ)言的模式套路都有比較深入的了結(jié),所以在學(xué)習(xí)一門新的語(yǔ)言的時(shí)候肯定會(huì)比較輕松。但是還是需要把一門語(yǔ)言的基本要素掌握的。
可以看網(wǎng)絡(luò)上有人總結(jié)的基礎(chǔ)知識(shí),多看一兩個(gè)版本,加深影響
還可以買一本go語(yǔ)言程序設(shè)計(jì)這樣的書。書的好處是系統(tǒng),集中,不是東一塊,西一塊,需要去搜集各種知識(shí)。越過初期非常模糊的坎,多看兩遍基礎(chǔ)知識(shí),心里就有底了。
2. 學(xué)習(xí)go語(yǔ)言編程的視頻課
go語(yǔ)言web編程等課程,我當(dāng)時(shí)看的無聞錄制的go語(yǔ)言web編程視頻課,非常受益。我覺得是我學(xué)習(xí)go語(yǔ)言的捷徑
有以下收獲:
1)了解了go程序?qū)懗绦虻沫h(huán)境和工具
2)學(xué)習(xí)了go語(yǔ)言測(cè)試的基本框架
3) 學(xué)習(xí)了如何查找go語(yǔ)言的資源
4)視頻課把基礎(chǔ)的編程內(nèi)容都展示了出來,非常值得學(xué)習(xí)。
3. 使用go語(yǔ)言進(jìn)行開發(fā)。
學(xué)習(xí)了視頻課程的后, 就開始使用go語(yǔ)言進(jìn)行開發(fā)。開發(fā)過程中去搜索go語(yǔ)言知識(shí), 很多都是Go語(yǔ)言中文網(wǎng) - Golang中文社區(qū)的鏈接,上面的基礎(chǔ)知識(shí)點(diǎn)基本能找到。
我第一步是寫一個(gè)后臺(tái)程序服務(wù)。
功能是提供注冊(cè)登錄流程,分為2個(gè)模塊,接入層和登錄服務(wù),當(dāng)然后面還有一個(gè)數(shù)據(jù)庫(kù)。
要寫后臺(tái)程序去找一下有沒有合適的框架,找了一圈發(fā)現(xiàn)沒有,就自己設(shè)計(jì)了。
首先是網(wǎng)絡(luò)收發(fā)數(shù)據(jù)模塊
然后是每個(gè)流程的處理模塊
最后完成網(wǎng)絡(luò)模塊與實(shí)例處理模塊的銜接。
采用了dispatcher作為分發(fā)器,采用反射創(chuàng)建所需要的流程來進(jìn)行。
把實(shí)例程序作為模板,開發(fā)自動(dòng)生成代碼的程序,大大提高開發(fā)的效率。
后面我會(huì)陸陸續(xù)續(xù)把代碼帖上來,做一個(gè)go語(yǔ)言的知識(shí)的專欄,以幫助要學(xué)習(xí)go語(yǔ)言的朋友。
「說要點(diǎn)」為您奉上
Go 最近剛滿 11 歲,所以你可以想象這么多年 Go 語(yǔ)言和其生態(tài)進(jìn)化了多少。作為一種強(qiáng)類型語(yǔ)言,它憑借垃圾回收和并發(fā)支持,日益流行。它較高的性能、可擴(kuò)展和資源利用效率。難怪 Go 現(xiàn)在應(yīng)用于各個(gè)領(lǐng)域,包括 Web 應(yīng)用、微服務(wù)、云計(jì)算、Web 服務(wù)和其他系統(tǒng)或工具。
關(guān)注 Go 語(yǔ)言、工具和社區(qū)不斷變化的好方法就是查看專門涉及 Go 的博客。在這篇文章中,我們會(huì)看到 Go 用戶、貢獻(xiàn)者和教育工作者寫的博客,以了解他們使用 Go 語(yǔ)言的各種方式。
A Journey With Go
《A Journey with Go》 是相當(dāng)新的博客,第一個(gè)發(fā)帖在 2019 年。它傾向于一個(gè)概念,而不是一系列詳解的帖子。對(duì)系列博客感興趣,可以在 garbage collection 、the compiler 和其他更多找到。它是由 Vincent Blanchon 寫的,并被托管在 Medium 上。
- 寫作質(zhì)量:☆☆☆☆
- 連貫性:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Applied Go
- 寫作質(zhì)量:☆☆☆☆
- 技術(shù)深度:☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆
Ardan Labs’ Blog
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Dave Cheney’s Blog
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
DEV’s Go Tag
- 寫作質(zhì)量:☆☆☆☆
- 技術(shù)深度:☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆
Digital Ocean’s Go Series
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆
- 廣泛實(shí)用性:☆☆☆☆
Eli Bendersky’s Blog
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Go By Example
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Go Web Examples
- 寫作質(zhì)量:☆☆☆
- 技術(shù)深度:☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Go’s Articles Wiki
- 寫作質(zhì)量:☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Golang Bot
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Golang Programs
- 寫作質(zhì)量:☆☆☆
- 技術(shù)深度:☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
GolangCode
- 寫作質(zhì)量:☆☆☆☆
- 技術(shù)深度:☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Gopher Academy Blog
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Gopher Guides
- 寫作質(zhì)量:☆☆☆
- 技術(shù)深度:☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆
Hashnode’s Go Tag
- 寫作質(zhì)量:☆☆☆☆
- 技術(shù)深度:☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆
Ilija Eftimov’s Blog
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
ITNEXT’s Blog
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Just For Func
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Learn The Go Programming Language
- 寫作質(zhì)量:☆☆☆☆
- 技術(shù)深度:☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆
Official Go Blog
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Russ Cox’s Blog
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Tit Petric’s Blog
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Tutorial Edge
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆☆
Wandering Thoughts’ Go Topic
- 寫作質(zhì)量:☆☆☆☆☆
- 技術(shù)深度:☆☆☆☆☆
- 廣泛實(shí)用性:☆☆☆☆
總結(jié)
關(guān)注 Go 博客是了解其他人如何使用 Go 解決問題的聰明的方法?,F(xiàn)在有很多 Go 的內(nèi)容,并且不僅限于博客,越來越多的人轉(zhuǎn)向視頻和音頻分享他們的 Go 內(nèi)容,更不用說所有可用的 Go 論壇和即時(shí)通訊。
關(guān)于 Go,總有新東西要學(xué)習(xí),更多或更有趣的方法總會(huì)出現(xiàn)。如果你知道其他我們應(yīng)該包含在這列表中的 Go 博客,在這里提交。
- 下一篇:餐飲怎么吸引人氣?
- 上一篇:預(yù)制板樓房拆還是不拆?
