初試 Go lang 經驗

由於現在工作的同事都擅長用 Go 語言工作,我則是一直沒有執行力去學。

恰巧有個開發寶可夢機器人的機會,任務是把 npm 的一個寶可夢套件改為 Go 版本套件。因此就順便向 evanlin 大大 手把手學 Go XD

這個套件做的事情很簡單,只有兩個函式:

  • 給定寶可夢 ID 與語言,回傳寶可夢名稱。
  • 給定寶可夢名稱與語言,回傳寶可夢 ID 。

實現的過程不難,就是普通的函式、迴圈、載入檔案、包套件、測試。但很容易把實現 Go 套件該走的過程走過一遍。

比較值得提的是環境設定的過程。

Go 環境

我的環境是 OS X El Capitan ,裝 Go 使用 brew install go 即可。

記得在 ~/.bash_profile 設定 $GOPATH 這個環境變數,告訴 Go 你的專案都放在哪裡。例如我的都放在 $HOME/projects/goProject 底下,就在 ~/.bash_profile 填入下面這一行:

export GOPATH=$HOME/projects/goProject

編輯器

用 Visual Studio Code 開發起來十分舒服。設定可參照 深入研究 Visual Studio Code for Golang 。為了快速上手,我並沒有全做,只有設定了 vscode-go 。這個工具讓你在存檔時,自動把程式碼標齊對正,並自動引入該引的套件。

另外學到幾招好用的 Visual Studio Code 技巧:

  • cmd + shift + B 能夠自動建置。
  • fn + F12 能夠跳到函數的定義。再按 control + - 可跳回原來的地方。
Visual Studio Code 的介面

Travis 持續部署

在持續部署時遇到了一些問題卡了我兩天,這裡也探索了一些 debug Travis 的技巧。

問題根源是套件函式要去讀一個檔案 data/zh-hant.json ,但我在自動測試的程式碼中寫成 data/zh-Hant.json (H 變成大寫了) 。在本地端 Mac OS 下檔案名稱是大小寫不敏感的,測試不會報錯;然而在 Travis CI 測試環境就會報錯。

要看在 Travis CI 測試環境中出什麼問題,除了可以到 Travis CI 的網站看錯誤代碼憑空猜測,可以用 docker 在本地重製測試步驟。

docker run -it quay.io/travisci/travis-ruby /bin/bash# 進到 container 中換成使用者 travis
su - travis

接著把 Travis CI 網站上的指令在 container 中重做,記得看到環境變數時都要用 echo $FOO 確認一下變數的內容是什麼。

本來懷疑是需要在 travis.yml 塞入某些環境變數,但當我很順利的在 container 中重現 Travis CI 網站上的錯誤代碼時,發現問題不出在環境變數,參透是檔案名稱大小寫的問題。修改測試代碼後 Travis CI 便測試成功,驗證了這個假說。

以下是完成版套件的 Repository:

2

2 claps
Chih-Cheng Liang

chihchengliang@gmail.com