IDEA Golang開發環境配置

本文從作者其它博客平臺遷移過來,文章寫於2019年部分內容有些陳舊,不影響整體思路。


IDEA Golang開發環境配置


2012年Go語言第一個正式版本至今已經歷時6年,因其優秀的性能,簡潔的併發以及高效的編譯等優勢市場份額逐步增多,越來越多的工程實踐開始選用Go語言作為基礎編程語言,其生態社區也逐步發展成型,下文將從零開始構建第一個Go Project。

Go 開發環境配置


以mac os為例,簡單的配置一下Go開發環境。

Step1: 安裝sdk

方式1:下載 go mac pkg文件進行軟件包 安裝

方式2:通過homebrew 管理軟件包

homebrew於mac如rpm包於linux,即mac下的軟件包管理程序。可以通過如下命令安裝homebrew

<code>/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"/<code>

使用homebrew管理go sdk:

  • brew install go 安裝
  • brew uninstall go 卸載

Step2: 配置環境變量

個人一直使用oh my zsh, 直接編輯用戶目錄下的.zshrc文件即可,bash用戶可以直接修改~/.bashrc。

下圖為個人的環境配置:


IDEA Golang開發環境配置

其中/Users/yzq/Code/go是我個人的go workspace

理論上現在go環境已經ready了,執行source .zshrc;go version

Step3: IDE配置

工欲善其事,必先利其器 目前主流的編輯器都支持了Go,比如vim,sublime,vscode,atom,如何選擇完全看個人意願了,我一直在用的是Jetbrains的 IDEA Go插件(喜歡完備特性的可以使用同系GoLand),該插件官方的說法是cover了GoLand所有特性。

直接打開Preference->Plugins安裝Go插件即可(最新版本IDEA如果遇到無法檢索該插件,可通過鏈接 https://plugins.jetbrains.com/plugin/9568-go/versions 下載後,以本地文件方式安裝)

Go 工程實踐


下文將重點講述如何以工程化標準實踐為要求建設Go工程

瞭解Go的workspace

workspace即工作空間,不同到編程語言乃至不同到IDE對於工作空間都有不同的設計理念(可以參考eclipse與IDEA工作空間的設計理念),以Java系IDE idea為例其工作空間叫Project,一個project會對應一套工程配置比如copyright,code format, and other config,比如多個項目可能使用不同的配置,那麼這個時候就可以從工作空間緯度進行隔離。

而Go的設計很巧妙,其工作空間只有一個,下面引述官方doc的兩段描述:

  • Go programmers typically keep all their Go code in a single workspace.
  • A workspace contains many version control repositories (managed by Git, for example).

A workspace is a directory hierarchy with three directories at its root:

  • src contains Go source files,
  • pkg contains package objects, and
  • bin contains executable commands.

下圖是我個人的工作空間目錄: ~/Code/go 已經在環境變量配置。

工作空間一級目錄


IDEA Golang開發環境配置

src目錄, 源碼倉庫按照服務進行劃分如


IDEA Golang開發環境配置

使用 go get xxx下載的源碼會自動到該目錄下

bin目錄,可執行二進制文件


IDEA Golang開發環境配置

pkg目錄,package object, build產物


IDEA Golang開發環境配置

最佳實踐 在工作空間規劃上應儘可能按照如上所示,尤其是源碼目錄儘可能按照項目歸屬版本管理系統比如github,gitlab劃分。

這樣做還有一個好處,當你多個代碼倉庫使用不同的賬號授權時候可以按照目錄進行配置,比如同時使用github與gitlab可以根據倉庫目錄進行gitconfig配置不同的User。

創建第一個Project

首先,我們按照Go推薦的做法完成了workspace的劃分,然後開始一個git項目,以我測試的demo為例,假設叫cool.go,源碼下載


IDEA Golang開發環境配置

目錄非常簡單,ecs,stringutil是兩個package,下面以ecs為例說明如何創建及使用一個package。

  • doc.go Go package的doc,用來生成go package document,源碼如下:
<code>/*    ecs OpenApi demo,use aliyun ecs sdk manage ecs, this package will provide you function list as follows:    DescribeInstances, query your account ecs.    CreateInstance, create a ecs vm with specified params. */package ecsproxy/<code>

使用 go doc 查看package document


IDEA Golang開發環境配置

  • ecsproxy.go 核心代碼,該demo中主要封裝ecs sdk操作ecs OpenAPI,源碼如下:
<code>package ecsproxyimport (    "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"    "fmt")//common init clientfunc initClient() (*ecs.Client, error) {    ecsClient, err := ecs.NewClientWithAccessKey(        "cn-shanghai",        "",        "")    if err != nil {        panic(err)    }    return ecsClient, err}func describeInstance() {    ecsClient, err := initClient()    request := ecs.CreateDescribeInstancesRequest()    request.PageSize = "10"    response, err := ecsClient.DescribeInstances(request)    if err != nil {        panic(err)    }    fmt.Print(response.Instances)}func createInstance() string {    ecsClient, err := initClient()    request := ecs.CreateCreateInstanceRequest()    request.InstanceType = "ecs.n1.tiny"    request.KeyPairName = "demo"    var disks *[]ecs.CreateInstanceDataDisk    var disk1 ecs.CreateInstanceDataDisk    disk1.Size = "20"    disk1.DeleteWithInstance = "true"    disk1.Category = "cloud"    request.DataDisk = disks    response, err :=        ecsClient.CreateInstance(request)    if err != nil {        panic(err)    }    fmt.Print(response.InstanceId)    return response.InstanceId}/<code>
  • ecsproxy_test.go ecsproxy.go UT,源碼如下:
<code>package ecsproxyimport (    "testing")func TestDescribeInstance(t *testing.T) {    describeInstance()}/<code>

運行ut,結果如下:


IDEA Golang開發環境配置

上面就是一個簡單的demo,通過調用aliyun ecs sdk實現ecs openapi操作,以上操作都是通過IDE圖形界面進行構建運行,建議初學者可以先了解以下go原生的構建,打包,運行命令(build,install,test)。

瞭解更多可以下載官方demo,執行go get __golang.org/x/tour/gotour

Go進階


以上簡單描述了Go的開發環境配置,工作空間劃分以及簡單demo,更多內容推薦閱讀:

  • 官方doc Effective Go
  • build web app with go


分享到:


相關文章: