書籍是:老許的《go語言程式設計》、 老謝的《go web程式設計》、 雨痕的《go 語言學習筆記》、 golang.org上面的《effective go》、《the go programming language specification》、go標準庫和github上眾多開源庫
4.go 學習難點,將我在學習中遇到的難點,以及相關參考資料索引出來,這些知識點對新入門的學習者有點難,但是對於想全面掌握go技能的開發人員來說,我認為是非常有價值的,這些知識點都是個人一步步學習趟過坑之後去發掘的:
go data structures
使用defer的幾個場景
參見:老許《go語言程式設計》 第9章 9.5節 介面機理
參加:國外一位大佬寫的:how to use inte***ces in go
參見:inte***ces_and_types
參見:learning go - inte***ces & reflections
參見:the go programming language specification-type
參見:learning go - types
參見國外大牛:function types in go (golang)
go閉包:函式程式設計之閉包漫談(closure)
go語言(golang) - 閉包
go函式式程式設計:go函式式程式設計實踐
所謂引用是指使用的不是指標,但是卻有指標的效果,引用:a做為引數傳遞函式內部,函式內部修改a卻改變了外部a的值
指標:*a作為引數傳遞到函式內部,函式內部修改了*a的值,外部a指向的值也發生改變;
參見:go語言的傳參和傳引用 這篇文章分析的非常到位時難得好文章
go中error型別的nil值和nil
國外這兩篇文章寫得也比較好,教你如何自定義error以返回更具體的錯誤;
error handling in go, part i
error handling in go, part ii
這裡有陳一回的 inte***ce nil 的文章 golang: 詳解inte***ce和nil 陳兄關於go的幾篇文章都非常接地氣,建議都看了
參見:老許翻譯的那本《go語言程式設計》
參見:官方版 laws-of-reflection
翻譯版的:the-laws-of-reflection 我認為這是翻譯的最好的一篇文章,融入了作者的思考和感悟
還有我的簡寫版的,更多的是個api的指引:the laws of reflection
反射小試身手:參考這篇在 golang 中用名字呼叫函式 mikespook翻譯的其他文章也非常棒
martini 框架使用的經典di庫:inject 教科書辦實現注入
inject庫**非常晦澀,可以參考陳兄的這邊經典文章golang: martini之inject原始碼分析 這篇文章深入淺出,寫的非常好
反射與介面、go型別系統關係非常密切,refelct.typeof 返回的是介面的dynamic type , func (v value) type() type返回value的type, reflect.type表述的是underlying type
相關參考:
參見《go併發程式設計》(說實在的,這本書寫的沒有達到我期望的水準,寫的都是基礎,語言有點囉嗦,挖的夠深,但是拔的不高,所謂拔的不高就是沒有系統的介紹併發設計模式)
參見goroutine背後的系統知識
go 記憶體模型 英文版
go語言併發之美 這篇文章寫得非常好,對常用的併發模式寫的深入淺出,這點《go併發程式設計》一本很厚的書居然沒有這些內容,實在讓人失望,有點徒有虛名
google io大會上大牛的幾篇文章(有牆)
concurrency is not parallelism 這裡有篇翻譯的併發不是並行
go concurrency patterns
advanced go concurrency patterns
go concurrency patterns: pipelines and cancellation 這裡有篇翻譯:go併發模式:管道和顯式取消
參見雨痕學習筆記
the go scheduler 這裡有篇翻譯go排程器
阿里skoo的幾篇文章 對排程器過程寫的非常生動
《go併發程式設計》對go排程也做了論述
國外的這篇ppt寫的也不錯 ,還有一篇
github上有本電子書 寫的非常深入,對go的幾個關鍵點實現進行深入剖析,非常好的文章
5.框架學習:
martini 只是看了inject那部分,2023年希望有時間細看一下 martini 和 revel。
6.期待
期待有個牛人能出一本專門介紹 go 如何設計大系統的書,go語言設計模式和物件導向設計模式有很大差別;老許有一篇ppt裡面介紹go的面向連線和組合的語言,以七牛系統的規模,應該可以抽象出一套模式出來,有人做嗎?併發的相關設計模式,網上有多文章,但是還不是很系統;希望2015有人能站出來做這件事情,我們好站在巨人的肩膀上繼續前行。
其實不是為了學習而學習: 我很大一部分時間還是邊開發,邊了解標準庫,邊學習;遇到比較大的通用的模組到github上找有無已經實現的,如有借鑑過來吧,如果你認為自己改寫的比原作者好,可以pull request. 當然在開發中遇到自己知識的盲點,就需要有股專研的精神,把它搞明白,技術也就自然得到提高,個人薄見,謹慎參考。
Go 學習筆記 Go 語言資料型別
在 go 程式語言中,資料型別用於宣告函式和變數。資料型別的出現是為了把資料分成所需記憶體大小不同的資料,程式設計的時候需要用大資料的時候才需要申請大記憶體,就可以充分利用記憶體。go 語言按類別有以下幾種資料型別 序號型別描述1 布林型布林型的值只可以是常量 true 或者 false。乙個簡單的...
Go語言學習資料大全
c 語言太原始了,c 太複雜了,go 語言是不二之選。有了 c c 的功底,學習 go 語言非常簡單。另外,go 語言官方的 effective go 是必讀的,這篇文章告訴你如何更好地使用 go 語言,以及 go 語言中的一些原理。go 語言最突出之處是併發程式設計,unix 老牌黑客羅勃 派克 ...
Go語言學習資料整理
整理網上找到的golang語言學習資料 基礎go 指南 a tour of go go語言聖經 中文版 effective go中文版 go入門指南 the way to go the way to go 中文譯本,中文正式名 go入門指南 golang學習室 go輕鬆學 techdoc go實戰開...