SlideShare una empresa de Scribd logo
1 de 141
Descargar para leer sin conexión
一天學會 Go 語言
2017.03.18
吳柏毅 Bo-Yi Wu
  Blog: https://blog.wu-boy.com/
GitHub: http://github.com/appleboy
  Slide: https://www.slideshare.net/appleboy
課程大綱
  Go 基本簡介
  Go 環境建置
  Go 基本語法
  Go concurrency 介紹
  Go 簡易 HTTP 伺服器
  Go 簡易 Command Line 實作
  Go 搭配 Docker 介紹
  Go 結合 C 語⾔言
  Go 實作 Line, Facebook 機器人
課程大綱
  Go 基本簡介
  Go 環境建置
  Go 基本語法
  Go concurrency 介紹
  Go 簡易 HTTP 伺服器
  Go 簡易 Command Line 實作
  Go 搭配 Docker 介紹
  Go 結合 C 語⾔言
  Go 實作 Line, Facebook 機器人
Go 基本簡介
 Go 語言誕生
 Go 語言優勢
 Go 語言選擇
 誰在用 Go 語言
Robert Griesemer, Rob Pike 和 Ken Thompson
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
為什麼設計 Go 語言
Google 遇到的問題
  大量的 C++ 代码,同時引入 Java 和 Python
  成千上萬的工程师
  數百萬的程式碼
  分散式編譯系統
  數百萬的伺服器
Google 痛點
  編譯非常慢
  沒用的相依性檔案
  工程師只用了一個語言一小部分
  程式碼難以維護 (可讀性差,⽂文件不清楚)
  部署時間越來越長
  交叉編譯困難
Go 語言特性
  沒有物件導向 (無繼承特性)
  強制類型
  Function 和 Method
  没有錯誤處理
  ⽤用字⾸首來區別可否存取
  不⽤用的 Import 或變數會引起編譯錯誤
  完整的標準函式
  支援 UTF-8 格式
Go at Google: Language
Design in the Service of
Software Engineering
https://talks.golang.org/2012/splash.article
為什麼要導入 Go 語言
Team work
Go 帶給團隊優勢
  學習曲線
  開發及執行效率
  由 Google 維護
  部署方便
  跨平台編譯
  內建 Coding Style, Testing 等工具
  多核心處理
誰在用 Go 語言
Go 大型專案https://github.com/golang/go/wiki/Projects
Why Gohttps://github.com/golang/go/wiki/whygo
Switched from other languages.
PHP, Python, Node.js, Java, C++
https://github.com/golang/go/wiki/FromXToGo
如何將 Go 語言導入團隊
  學習曲線
  程式碼簡潔
  沒有物件導向
  團隊開發工具整合
  Coding Style
  Testing Tool
  Benchmark Tool
  性能分析
  部署環境
  降低部署時間
  降低測試時間
  重啟時間非常快,Load-Balancer 不需要 Pre-warning
  系統效能 (記憶體用量, CPU 使用率 …)
  EC2 使用量降低
A push notification server written in Go
https://github.com/appleboy/gorush/
課程大綱
  Go 基本簡介
  Go 環境建置
  Go 基本語法
  Go concurrency 介紹
  Go 簡易 HTTP 伺服器
  Go 簡易 Command Line 實作
  Go 搭配 Docker 介紹
  Go 結合 C 語⾔言
  Go 實作 Line, Facebook 機器人
安裝 Go 環境
請直接安裝 Go Version Manager
https://github.com/moovweb/gvm
安裝步驟
gvm install go1.4 -B
gvm use go1.4
 export GOROOT_BOOTSTRAP=$GOROOT
gvm install go1.8
請在終端機執行
go env
修改 GOPATH 路徑
export GOPATH=/Users/appleboy/git/go
注意: Go 1.8 之後已經預設將 GOPATH 設定在 ${HOME}/go 路徑
GOPATH ⺫⽬目錄局結構
 bin
 編譯後產生可執行檔案
src
 存放程式碼
pkg
 放置編譯後的 .a 檔案
Go 指令介紹
  go get
  go run
  go test
  go fmt
  go install
  go build
  go doc
在本機端看 Go 文件
godoc –http=:8088
Go 程式碼品質
gofmthttps://blog.golang.org/go-fmt-your-code
gofmt
  程式碼自動化排版
  整合各大編輯器 (Atom, Sublime, VS code, Vim .. 等)
  重構程式碼
golinthttps://github.com/golang/lint
golint
  變數命名方式
  確保文件撰寫
Go 編輯器
Visual Studio Code
https://code.visualstudio.com
課程大綱
  Go 基本簡介
  Go 環境建置
  Go 基本語法
  Go 套件製作
  Go concurrency 介紹
  Go 簡易 Command Line 實作
  Go 搭配 Docker 介紹
  Go 結合 C 語⾔言
  Go 實作 Line, Facebook 機器人
Import
可以使用別名
可以省略引用
Import 順序
 內建 Package
 自建 Package
 外部 Package
Package
用大小寫決定
使用權限
大小寫區別
Private 及 Public
變數宣告
const, var, :=
變數宣告
  使用 const
  使用 := (常用)
  使用 var
const使用 iota
if 條件子句
if 條件子句
  右括號必須跟 if 或 else 同一行
  支援私有變數,只在 if 內使用
switch
  不需要寫 break
fallthrough 可以繼續執⾏行下⼀一個 case
Array, Slice
Functions
function
  Return
  Return naming
  Return multiple
作業
  請寫出一個 func 加總所有輸入值及平均值
Func(4,6) = 10, 5
Func(4,6,10) = 20, 6.66
  請忽略負數值
Func(4, -2, 100) = 104, 34
Variadic Functions
Go func 不提供預設值
Structs, Methods
作業
  實作計算機功能
  初始值 New(int)
  加法 func Add(input …int)
  減法 func Sub(input …int)
  輸出
Interface
作業
  實作兩台計算機功能
  初始值(一台為 100, 一台為 200)
  加法(一台 * 2, 一台 * 3)
  減法(一台 * 2, 一台 * 4)
  輸出
  Add(100,200,300)
  Sub(50, 60)
  計算機 1: 輸出為 1080
  計算機 2: 輸出為 1560
Type assertion and type switch
Interface
作業
  請用單一 func 實作底下功能
  輸入數字 100 轉換成字串 100
  輸入字串 100 轉換成數字 100
init function
錯誤處理
Error Handling
https://golang.org/pkg/errors/
錯誤處理
 errors.New
 fmt.Errorf
自訂錯誤
Error() string
https://blog.golang.org/error-handling-and-go
作業
  撰寫底下 func 功能
  輸入數字小於 10 則回傳錯誤
  自訂錯誤輸入訊息
  您的輸入 %d 小於 10
Vendor 管理
請直接安裝
Package Management Tools
https://github.com/golang/go/wiki/PackageManagementTools
推薦套件 govendor
https://github.com/kardianos/govendor
Go 也想統一 dependency tool
https://github.com/golang/dep
寫測試Go 內建測試 Tool
測試完整 package
go test -v -cover -coverprofile=coverage.txt ./…
測試單一函數go test -v -cover -run=TestHelloWorld ./example/…
測試覆蓋率報表
go tool cover -html=coverage.txt
作業
  請將前面作業補上基本測試,覆蓋率達 80 %
課程大綱
  Go 基本簡介
  Go 環境建置
  Go 基本語法
  Go concurrency 介紹
  Go 簡易 HTTP 伺服器
  Go 簡易 Command Line 實作
  Go 搭配 Docker 介紹
  Go 結合 C 語⾔言
  Go 實作 Line, Facebook 機器人
Go supports concurrency
  concurrent execution (goroutines)
  synchronization and messaging (channels)
  multi-way concurrent control (select)
Concurrency vs. Parallelism
https://blog.golang.org/concurrency-is-not-parallelism
ChannelBlocking vs Non-Blocking
sync.WaitGroup
Select
作業
  建立兩個 Channel
errChannel := make(chan error, 1)
  finished := make(chan bool, 1)
  用 For 跑 10 個 Job
  其中第五個 Job 回傳 err chan 後結束程式
  跑完 10 個 Job 則回傳 finished chan 後結束程式
  用 sync.WaitGroup 實現
課程大綱
  Go 基本簡介
  Go 環境建置
  Go 基本語法
  Go Concurrency 介紹
  Go 簡易 HTTP 伺服器
  Go 簡易 Command Line 實作
  Go 搭配 Docker 介紹
  Go 結合 C 語⾔言
  Go 實作 Line, Facebook 機器人
Web Clientshttps://golang.org/pkg/net/http#Client
https://golang.org/pkg/net/http#Request
https://golang.org/pkg/net/http#Response
Web Servershttp.ListenAndServe
HandleFunc
NewServeMux & ServeHTTP
自訂 Http.Server
作業
  撰寫 Http Server Listen on 8088 port
  /hello 輸出 Hello Golang
Go 1.8 Closed Server
os.Signal
選擇 Web Framework
https://awesome-go.com/#web-frameworks
Gin, Beego, Echo …
豐富的 Middleware
https://github.com/gin-contrib
快速寫 Web Testing
https://github.com/appleboy/gofight
https://awesome-go.com/#testing
課程大綱
  Go 基本簡介
  Go 環境建置
  Go 基本語法
  Go concurrency 介紹
  Go 簡易 HTTP 伺服器
  Go 簡易 Command Line 實作
  Go 搭配 Docker 介紹
  Go 結合 C 語⾔言
  Go 實作 Line, Facebook 機器人
flag packagehttps://golang.org/pkg/flag
flag package
不支援環境變數 os.Getenv()
urfave/clihttps://github.com/urfave/cli
https://blog.wu-boy.com/2017/02/write-command-line-in-golang/
https://github.com/spf13/cobra
跨平台編譯
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o hello package
GOOS=linux GOARCH=arm CGO_ENABLED=0 go build -o hello package
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -o hello package
GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -o hello.exe package
Go cross compile tool
https://github.com/mitchellh/gox
課程大綱
  Go 基本簡介
  Go 環境建置
  Go 基本語法
  Go concurrency 介紹
  Go 簡易 HTTP 伺服器
  Go 簡易 Command Line 實作
  Go 搭配 Docker 介紹
  Go 結合 C 語⾔言
  Go 實作 Line, Facebook 機器人
Docker Image
docker build -t example-alpine -f Dockerfile.golang .
Alpine Linux 挑戰最小
docker image OS
https://goo.gl/bLd9FA
golang:1.8.0-alpine
更小 scratch
x509: failed to load system
roots and no roots provided
centurylink/ca-certs
課程大綱
  Go 基本簡介
  Go 環境建置
  Go 基本語法
  Go concurrency 介紹
  Go 簡易 HTTP 伺服器
  Go 簡易 Command Line 實作
  Go 搭配 Docker 介紹
  Go 結合 C 語⾔言
  Go 實作 Line, Facebook 機器人
Downsize go binary?
Go 1.5
Using shared library in Go
this feature is available on linux/amd64 platform
Compile standard builtin packages
go install -buildmode=shared -linkshared std
Compile your share library
go install -buildmode=shared –linkshared calc
Using shared Go library in C
Go functions can be executed
from C applications.
//export <your_function_name>
go build -buildmode=c-shared –o hello.so hello.go
buildmode=plugin
go build -buildmode=plugin -o hello.so hello.go
Go 1.8 feature
Using C Library in Go
課程大綱
  Go 基本簡介
  Go 環境建置
  Go 基本語法
  Go concurrency 介紹
  Go 簡易 HTTP 伺服器
  Go 簡易 Command Line 實作
  Go 搭配 Docker 介紹
  Go 結合 C 語⾔言
  Go 實作 Line, Facebook 機器人 (作業)
Bot 機器人
  Slack
  Facebook
  Line
  Telegram
作業
  整合 Go Cli Tool:
  ./main server 用來接受 fb 或 line callback
  ./main send 用來傳送訊息給單一使用者
  ./main send -u user -m message

Más contenido relacionado

La actualidad más candente

Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)Chu-Siang Lai
 
Continuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CIContinuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CIChu-Siang Lai
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台Bo-Yi Wu
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer TalkLarry Cai
 
Continuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CIContinuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CIChu-Siang Lai
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to gitBo-Yi Wu
 
微软Bot framework简介
微软Bot framework简介微软Bot framework简介
微软Bot framework简介Zhichao Liang
 
AWS EC2 for beginner
AWS EC2 for beginnerAWS EC2 for beginner
AWS EC2 for beginnerazole Lai
 
連哈秋都懂的Git教學
連哈秋都懂的Git教學連哈秋都懂的Git教學
連哈秋都懂的Git教學hydai
 
Docker Compose
Docker ComposeDocker Compose
Docker ComposeMiles Chou
 
運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率Bo-Yi Wu
 
Git and Github basic with SourceTree
Git and Github basic with SourceTreeGit and Github basic with SourceTree
Git and Github basic with SourceTreeChu-Siang Lai
 
容器式基礎架構介紹
容器式基礎架構介紹容器式基礎架構介紹
容器式基礎架構介紹Philip Zheng
 
20170905 dev ops in hiiir
20170905 dev ops in hiiir20170905 dev ops in hiiir
20170905 dev ops in hiiirIsaac Tseng
 
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 Continuous Delivery Workshop with Ansible x GitLab CI (5th) Continuous Delivery Workshop with Ansible x GitLab CI (5th)
Continuous Delivery Workshop with Ansible x GitLab CI (5th)Chu-Siang Lai
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorialazole Lai
 
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)Continuous Delivery Workshop with Ansible x GitLab CI (2nd)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)Chu-Siang Lai
 

La actualidad más candente (20)

Docker應用
Docker應用Docker應用
Docker應用
 
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
 
Continuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CIContinuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CI
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
Continuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CIContinuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CI
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
 
微软Bot framework简介
微软Bot framework简介微软Bot framework简介
微软Bot framework简介
 
AWS EC2 for beginner
AWS EC2 for beginnerAWS EC2 for beginner
AWS EC2 for beginner
 
Docker Build
Docker BuildDocker Build
Docker Build
 
連哈秋都懂的Git教學
連哈秋都懂的Git教學連哈秋都懂的Git教學
連哈秋都懂的Git教學
 
Docker Compose
Docker ComposeDocker Compose
Docker Compose
 
運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率
 
My DevOps Tour 0.1
My DevOps Tour 0.1My DevOps Tour 0.1
My DevOps Tour 0.1
 
Git and Github basic with SourceTree
Git and Github basic with SourceTreeGit and Github basic with SourceTree
Git and Github basic with SourceTree
 
容器式基礎架構介紹
容器式基礎架構介紹容器式基礎架構介紹
容器式基礎架構介紹
 
20170905 dev ops in hiiir
20170905 dev ops in hiiir20170905 dev ops in hiiir
20170905 dev ops in hiiir
 
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 Continuous Delivery Workshop with Ansible x GitLab CI (5th) Continuous Delivery Workshop with Ansible x GitLab CI (5th)
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
 
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)Continuous Delivery Workshop with Ansible x GitLab CI (2nd)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)
 

Destacado

手把手帶你學Docker 03042017
手把手帶你學Docker 03042017手把手帶你學Docker 03042017
手把手帶你學Docker 03042017Paul Chao
 
Cloud Foundry - #IBMOTS 2016
Cloud Foundry - #IBMOTS 2016Cloud Foundry - #IBMOTS 2016
Cloud Foundry - #IBMOTS 2016Sam Ramji
 
Innovating Out In The Open - OSCON 2016
Innovating Out In The Open - OSCON 2016Innovating Out In The Open - OSCON 2016
Innovating Out In The Open - OSCON 2016Phil Estes
 
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...Patrick Chanezon
 
Devoxx 2016: A Developer's Guide to OCI and runC
Devoxx 2016: A Developer's Guide to OCI and runCDevoxx 2016: A Developer's Guide to OCI and runC
Devoxx 2016: A Developer's Guide to OCI and runCPhil Estes
 
Re-implementing Thrift using MDE
Re-implementing Thrift using MDERe-implementing Thrift using MDE
Re-implementing Thrift using MDESina Madani
 
Thesis: Slicing of Java Programs using the Soot Framework (2006)
Thesis:  Slicing of Java Programs using the Soot Framework (2006) Thesis:  Slicing of Java Programs using the Soot Framework (2006)
Thesis: Slicing of Java Programs using the Soot Framework (2006) Arvind Devaraj
 
Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016Stuart Charlton
 
第一次使用Shodan.io就上手
第一次使用Shodan.io就上手第一次使用Shodan.io就上手
第一次使用Shodan.io就上手Ting-En Lin
 
Singleton class in Java
Singleton class in JavaSingleton class in Java
Singleton class in JavaRahul Sharma
 
Import golang; struct microservice - Codemotion Rome 2015
Import golang; struct microservice - Codemotion Rome 2015Import golang; struct microservice - Codemotion Rome 2015
Import golang; struct microservice - Codemotion Rome 2015Giorgio Cefaro
 
Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot Evan Lin
 
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...Phil Estes
 
A microservice architecture based on golang
A microservice architecture based on golangA microservice architecture based on golang
A microservice architecture based on golangGianfranco Reppucci
 
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry(続) はじめてのCloud Foundry
(続) はじめてのCloud FoundryTomohiro Ichimura
 
BUD17-302: LLVM Internals #2
BUD17-302: LLVM Internals #2 BUD17-302: LLVM Internals #2
BUD17-302: LLVM Internals #2 Linaro
 
Embedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 PlatformEmbedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 PlatformSZ Lin
 
《計算機結構與作業系統裏》-- 資工系學生們經常搞錯的那些事兒!
《計算機結構與作業系統裏》--  資工系學生們經常搞錯的那些事兒!《計算機結構與作業系統裏》--  資工系學生們經常搞錯的那些事兒!
《計算機結構與作業系統裏》-- 資工系學生們經常搞錯的那些事兒!鍾誠 陳鍾誠
 
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linaro
 

Destacado (20)

手把手帶你學Docker 03042017
手把手帶你學Docker 03042017手把手帶你學Docker 03042017
手把手帶你學Docker 03042017
 
Cloud Foundry - #IBMOTS 2016
Cloud Foundry - #IBMOTS 2016Cloud Foundry - #IBMOTS 2016
Cloud Foundry - #IBMOTS 2016
 
Innovating Out In The Open - OSCON 2016
Innovating Out In The Open - OSCON 2016Innovating Out In The Open - OSCON 2016
Innovating Out In The Open - OSCON 2016
 
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
 
Devoxx 2016: A Developer's Guide to OCI and runC
Devoxx 2016: A Developer's Guide to OCI and runCDevoxx 2016: A Developer's Guide to OCI and runC
Devoxx 2016: A Developer's Guide to OCI and runC
 
Re-implementing Thrift using MDE
Re-implementing Thrift using MDERe-implementing Thrift using MDE
Re-implementing Thrift using MDE
 
Golang
GolangGolang
Golang
 
Thesis: Slicing of Java Programs using the Soot Framework (2006)
Thesis:  Slicing of Java Programs using the Soot Framework (2006) Thesis:  Slicing of Java Programs using the Soot Framework (2006)
Thesis: Slicing of Java Programs using the Soot Framework (2006)
 
Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016
 
第一次使用Shodan.io就上手
第一次使用Shodan.io就上手第一次使用Shodan.io就上手
第一次使用Shodan.io就上手
 
Singleton class in Java
Singleton class in JavaSingleton class in Java
Singleton class in Java
 
Import golang; struct microservice - Codemotion Rome 2015
Import golang; struct microservice - Codemotion Rome 2015Import golang; struct microservice - Codemotion Rome 2015
Import golang; struct microservice - Codemotion Rome 2015
 
Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot
 
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
 
A microservice architecture based on golang
A microservice architecture based on golangA microservice architecture based on golang
A microservice architecture based on golang
 
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry
 
BUD17-302: LLVM Internals #2
BUD17-302: LLVM Internals #2 BUD17-302: LLVM Internals #2
BUD17-302: LLVM Internals #2
 
Embedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 PlatformEmbedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 Platform
 
《計算機結構與作業系統裏》-- 資工系學生們經常搞錯的那些事兒!
《計算機結構與作業系統裏》--  資工系學生們經常搞錯的那些事兒!《計算機結構與作業系統裏》--  資工系學生們經常搞錯的那些事兒!
《計算機結構與作業系統裏》-- 資工系學生們經常搞錯的那些事兒!
 
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
 

Similar a Introduction to Golang final

Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介Bo-Yi Wu
 
Golang 入門初體驗
Golang 入門初體驗Golang 入門初體驗
Golang 入門初體驗政斌 楊
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027Wei Sun
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用Philip Zheng
 
Git 入门实战
Git 入门实战Git 入门实战
Git 入门实战icy leaf
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)Wei Sun
 
版本控制 使用Git & git hub
版本控制   使用Git & git hub版本控制   使用Git & git hub
版本控制 使用Git & git hub維佋 唐
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐zhangsuoyong
 
Git and git hub
Git and git hubGit and git hub
Git and git hub唯 李
 
Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetupsunng87
 
Openshift by mtchang
Openshift by mtchangOpenshift by mtchang
Openshift by mtchangChang Mt
 
JCConf 2015 TW 高效率資料爬蟲組合包
JCConf 2015 TW 高效率資料爬蟲組合包JCConf 2015 TW 高效率資料爬蟲組合包
JCConf 2015 TW 高效率資料爬蟲組合包書豪 李
 
Odoo Development
Odoo DevelopmentOdoo Development
Odoo DevelopmentTsungWei Hu
 
Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发Michael Yan
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshellNelson Tai
 

Similar a Introduction to Golang final (20)

Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介
 
Golang 入門初體驗
Golang 入門初體驗Golang 入門初體驗
Golang 入門初體驗
 
Golang
GolangGolang
Golang
 
Cocoa on Rails 4th
Cocoa on Rails 4thCocoa on Rails 4th
Cocoa on Rails 4th
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
 
Git 入门实战
Git 入门实战Git 入门实战
Git 入门实战
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
 
版本控制 使用Git & git hub
版本控制   使用Git & git hub版本控制   使用Git & git hub
版本控制 使用Git & git hub
 
Git
GitGit
Git
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐
 
Git
GitGit
Git
 
Git and git hub
Git and git hubGit and git hub
Git and git hub
 
Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetup
 
Openshift by mtchang
Openshift by mtchangOpenshift by mtchang
Openshift by mtchang
 
JCConf 2015 TW 高效率資料爬蟲組合包
JCConf 2015 TW 高效率資料爬蟲組合包JCConf 2015 TW 高效率資料爬蟲組合包
JCConf 2015 TW 高效率資料爬蟲組合包
 
Odoo Development
Odoo DevelopmentOdoo Development
Odoo Development
 
Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发
 
Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshell
 

Más de Paul Chao

AI與大數據數據處理 Spark實戰(20171216)
AI與大數據數據處理 Spark實戰(20171216)AI與大數據數據處理 Spark實戰(20171216)
AI與大數據數據處理 Spark實戰(20171216)Paul Chao
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updatedPaul Chao
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updatedPaul Chao
 
廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰Paul Chao
 
廣宣學堂: 機器視覺初探 10152017
廣宣學堂: 機器視覺初探 10152017廣宣學堂: 機器視覺初探 10152017
廣宣學堂: 機器視覺初探 10152017Paul Chao
 
Python網站框架絕技: Django 完全攻略班
Python網站框架絕技: Django 完全攻略班Python網站框架絕技: Django 完全攻略班
Python網站框架絕技: Django 完全攻略班Paul Chao
 
開放運算&GPU技術研究班
開放運算&GPU技術研究班開放運算&GPU技術研究班
開放運算&GPU技術研究班Paul Chao
 
廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班Paul Chao
 
廣宣學堂: R programming for_quantitative_finance_0623
廣宣學堂: R programming for_quantitative_finance_0623 廣宣學堂: R programming for_quantitative_finance_0623
廣宣學堂: R programming for_quantitative_finance_0623 Paul Chao
 
Docker workshop 0507 Taichung
Docker workshop 0507 Taichung Docker workshop 0507 Taichung
Docker workshop 0507 Taichung Paul Chao
 
20170430 python爬蟲攻防戰-攻防與金融大數據分析班
20170430 python爬蟲攻防戰-攻防與金融大數據分析班20170430 python爬蟲攻防戰-攻防與金融大數據分析班
20170430 python爬蟲攻防戰-攻防與金融大數據分析班Paul Chao
 
廣宣學堂Python金融爬蟲原理班 20170416
廣宣學堂Python金融爬蟲原理班 20170416廣宣學堂Python金融爬蟲原理班 20170416
廣宣學堂Python金融爬蟲原理班 20170416Paul Chao
 

Más de Paul Chao (12)

AI與大數據數據處理 Spark實戰(20171216)
AI與大數據數據處理 Spark實戰(20171216)AI與大數據數據處理 Spark實戰(20171216)
AI與大數據數據處理 Spark實戰(20171216)
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
 
廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰
 
廣宣學堂: 機器視覺初探 10152017
廣宣學堂: 機器視覺初探 10152017廣宣學堂: 機器視覺初探 10152017
廣宣學堂: 機器視覺初探 10152017
 
Python網站框架絕技: Django 完全攻略班
Python網站框架絕技: Django 完全攻略班Python網站框架絕技: Django 完全攻略班
Python網站框架絕技: Django 完全攻略班
 
開放運算&GPU技術研究班
開放運算&GPU技術研究班開放運算&GPU技術研究班
開放運算&GPU技術研究班
 
廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班
 
廣宣學堂: R programming for_quantitative_finance_0623
廣宣學堂: R programming for_quantitative_finance_0623 廣宣學堂: R programming for_quantitative_finance_0623
廣宣學堂: R programming for_quantitative_finance_0623
 
Docker workshop 0507 Taichung
Docker workshop 0507 Taichung Docker workshop 0507 Taichung
Docker workshop 0507 Taichung
 
20170430 python爬蟲攻防戰-攻防與金融大數據分析班
20170430 python爬蟲攻防戰-攻防與金融大數據分析班20170430 python爬蟲攻防戰-攻防與金融大數據分析班
20170430 python爬蟲攻防戰-攻防與金融大數據分析班
 
廣宣學堂Python金融爬蟲原理班 20170416
廣宣學堂Python金融爬蟲原理班 20170416廣宣學堂Python金融爬蟲原理班 20170416
廣宣學堂Python金融爬蟲原理班 20170416
 

Introduction to Golang final