Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Go 語言基礎簡介

Go 語言基礎簡介

Go 語言入門介紹,底下是大綱:

* Go 語言誕生
* Go 語言優勢
* Go 語言選擇
* 誰在用 Go 語言

最後會提到 goroutine 及 channel 這兩大特性。如果對 Go 語言有興趣,可以參考線上課程: https://blog.wu-boy.com/golang-online-course/

Bo-Yi Wu

March 27, 2018
Tweet

More Decks by Bo-Yi Wu

Other Decks in Programming

Transcript

  1. Mediatek Engineer DevOps Golang, PHP, Node.js .. Some open source

    Gitea Gin Drone appleboy @GitHub appleboy @twitter appleboy @slideshare appleboy46 @facebook About Me 2
  2. Go 發佈週期 (半年⼀版) 2013/05 1. 1 2013/12 1. 2 2014/06

    1. 3 2014/12 1. 4 2015/08 1.5 (Google 規定以後每半年發佈⼀版 ) 2016/02 1. 6 2016/08 1. 7 2017/02 1. 8 2017/08 1. 9 2018/02 1.10 (最新版)
  3. Google 遇到的問題 ⼤量的 C++ 代码,同時引入 Java 和 Pytho n 成千上萬的⼯程师

    (每個⼈風格不同 ) 數百萬的程式碼 (如何減少代碼產量 ) 分散式編譯系統 (交叉編譯速度 … ) 數百萬的伺服器 (部署時間 …)
  4. Go 語⾔特性 沒有物件導向 (無繼承特性 ) 強制類型 Function 和 Metho d

    没有錯誤處理 ⽤字⾸來區別可否存取 不⽤的 Import 或變數會引起編譯錯誤 完整的標準函式 ⽀援 UTF-8 格式
  5. Go at Google: Language Design in the Service of Software

    Engineering https://talks.golang.org/2012/splash.article
  6. Switched from other languages. 
 PHP, Python, Node.js, Java, C++

    https://github.com/golang/go/wiki/FromXToGo
  7. 5 Reasons Why We switched from Python To Go https://hackernoon.com/5-reasons-why-we-switched-from-python-to-go-4414d5f42690

    中⽂: https://blog.wu-boy.com/2017/04/5-reasons-why-we-switched-from-python-to-go/
  8. 學習曲線 程式碼簡潔 沒有物件導向 團隊開發⼯具整合 Coding Style Testing Tool Benchmark Too

    l 部署環境 (Go 1.5 Cross Compiler ) 降低部署時間 降低測試時間 重啟時間非常快,Load-Balancer 不需要 Pre-warning 系統效能 (記憶體⽤量, CPU 使⽤率 … ) EC2 使⽤量降低 (降低 80 ~ 85%) Response time 100ms -> 10ms
  9. $ for i in {1..9999999}; do bat -b.N=1000 -b.C=100 POST

    localhost:8088/api/push notifications:[email protected]; sleep 1; done
  10. 跨平台編譯 GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o hello packag e

    GOOS=linux GOARCH=arm CGO_ENABLED=0 go build -o hello packag e GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -o hello packag e GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -o hello.exe package
  11. optimistic concurrency 使⽤ sync.Mutex 解決問題? (X ) 使⽤ goroutine +

    Channel 設計單⼀ Queue? (X ) 使⽤ goroutine + Channel 設計多重 Queue? (X)