Go官方安裝與體驗教程,VSCODE中Go配置


Go官方安裝與體驗教程,VSCODE中Go配置

go下載與安裝

  1. 前往https://golang.google.cn/dl/下載linux系統對應的安裝包,后綴為.tar.gz
  2. 前往https://golang.google.cn/doc/install安裝指導查看相關命令,在linux系統下
    1. tar -C /usr/local -xzf go1.15.6.linux-amd64.tar.gz,查看tar --help,-C選項的意思是-C, --directory=DIR change to directory DIR,-x表示解壓,-z表示使用gzip解壓,-f后接壓縮文件路徑,這條命令將解壓.tar.gz文件,解壓目錄為/usr/local
    2. export PATH=$PATH:/usr/local/go/bin添加環境變量/usr/local/go/bin到$PATH的末尾,使用echo $PATH可以看到當前的$PATH的值,可以看到不同的目錄是用冒號隔開的,因此PATH=$PATH:/usr/local/go/bin表示將/usr/local/go/bin加如到$PATH的末尾.隨后source $HOME/.profile使得更改生效.
    3. go version有輸出代表安裝成功

Go 官方體驗教程

  1. 前往https://golang.google.cn/doc/tutorial/getting-started查看Get Started教程

  2. 盡量使用梯子FQ完成教程,浪費時間在網絡問題上實在沒必要.

  3. $HOME目錄下創建一個GoLearning文件夾,進入此文件夾,創建hello目錄

  4. 在hello目錄中指定工作區目錄GOPATH,Go通過GoPATH來確定生成中間文件和可執行文件的路徑,命令為

    # GOPATH默認是空的,pwd導出當前目錄,`pwd`獲得當前目錄值
    export GOPATH=`pwd`
    # 可用echo $GOPATH查看當前GoPATH的值
    
  5. 文本編輯寫一個hello.go文件,必須從main包開始

    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Hello, World!")
    }
    
    1. go run hello.go輸出Hello,world

    2. 將hello.go改為

      package main
      
      import "fmt"
      
      import "rsc.io/quote"
      
      func main() {
          fmt.Println(quote.Go())
      }
      
    3. 跳轉到GoLearning文件夾,執行go mod init hello在GoLearning文件夾下生成go.mod文件
      8. go run hello.go下載rsc.io/quote,輸出Don't communicate by sharing memory, share memory by communicating.目前來看go mod應該是一個包管理器,有點像python的pip工具或conda工具
      9. 隨后官方提供了一些代碼描述go語言的一些特性,random包,測試框架等,略過,本博客只關注環境部分.
      10. 上述使用go run命令編譯運行hello.go,適合調試階段使用.在發布時,需要生成相關的二進制可執行文件和依賴文件,此時使用go install命令,go install 的作用有兩步:第一步是編譯導入的包文件,所有導入的包文件編譯完才會編譯主程序;第二步是將編譯后生成的可執行文件放到 bin 目錄下($GOPATH/bin),編譯后的包文件放到 pkg 目錄下($GOPATH/pkg)。($GOPATH為Go的工作目錄)
      11. 在hello文件夾中執行go install,將生成bin/hello可執行文件,相關依賴包放置在pkg文件夾中,通過設置$GOBIN環境變量可以指定二進制文件路徑,類似設置GOPATH,使用export GOBIN=/yourpath,若希望能在shell中任意目錄執行hello,可將hello加入PATH環境變量末尾,類似前文,使用export PATH=$PATH:/yourpath/hello

VSCODE中配置

  1. # 通過設置七牛雲代理來避免下載失敗,關鍵是開啟go env
    # 中的GO111MODULE和GOPROXY
    # 啟用 Go Modules 功能
    export GO111MODULE=on
    # 配置 GOPROXY 環境變量
    export GOPROXY=https://goproxy.io
    # 使環境變量設置生效
    source #HOME/.profile
    # go env檢查這兩個字段
    # 這里的設置是永久的,對所有目錄生效
    # 如果只想設置當前GOPATH的env
    # 則執行
    # go env -w GO111MODULE=on
    # go env -w GOPROXY=https://goproxy.io,direct
    
  2. 在hello目錄下執行以下go install,執行完后bin目錄下會生成golint,godef,gocode等二進制工具,之后只需要將這些二進制文件拷貝到go工程中即可使用這些常用格式化,檢查等工具了.

    go install github.com/mdempsky/gocode 
    go install github.com/uudashr/gopkgs/v2/cmd/gopkgs 
    go install github.com/ramya-rao-a/go-outline 
    go install github.com/acroca/go-symbols 
    go install golang.org/x/tools/cmd/guru
    go install golang.org/x/tools/cmd/gorename 
    go install github.com/cweill/gotests/...
    go install github.com/fatih/gomodifytags 
    go install github.com/josharian/impl 
    go install github.com/davidrjenni/reftools/cmd/fillstruct 
    go install github.com/haya14busa/goplay/cmd/goplay 
    go install github.com/godoctor/godoctor 
    go install github.com/go-delve/delve/cmd/dlv 
    go install github.com/stamblerre/gocode 
    go install github.com/rogpeppe/godef 
    go install github.com/sqs/goreturns 
    go install golang.org/x/lint/golint 
    go install golang.org/x/tools/gopls 
    
  3. 此時go.mod文件中顯示

    module hello
    
    go 1.15
    
    require (
    	github.com/acroca/go-symbols v0.1.1 // indirect
    	github.com/cweill/gotests v1.5.3 // indirect
    	github.com/davidrjenni/reftools v0.0.0-20201119194839-01cf781abd5b // indirect
    	github.com/fatih/gomodifytags v1.13.0 // indirect
    	github.com/go-delve/delve v1.5.0 // indirect
    	github.com/godoctor/godoctor v0.0.0-20200702010311-8433dcb3dc61 // indirect
    	github.com/haya14busa/goplay v1.0.0 // indirect
    	github.com/josharian/impl v1.0.0 // indirect
    	github.com/mdempsky/gocode v0.0.0-20200405233807-4acdcbdea79d // indirect
    	github.com/ramya-rao-a/go-outline v0.0.0-20200117021646-2a048b4510eb // indirect
    	github.com/rogpeppe/godef v1.1.2 // indirect
    	github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect
    	github.com/sqs/goreturns v0.0.0-20181028201513-538ac6014518 // indirect
    	github.com/stamblerre/gocode v1.0.0 // indirect
    	github.com/uudashr/gopkgs/v2 v2.1.2 // indirect
    	golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect
    	golang.org/x/tools v0.0.0-20201204222352-654352759326 // indirect
    	golang.org/x/tools/gopls v0.5.5 // indirect
    )
    
    

    4.vscode工作區設置setting.json

    // 具體字段設置還得在實踐中體會
    {
        "files.autoSave": "onFocusChange",
        "workbench.colorTheme": "Visual Studio Dark",
        "go.buildOnSave": "package",
        "go.lintOnSave": "package",
        "go.vetOnSave": "package",
        "go.buildTags": "",
        "go.buildFlags": [],
        "go.lintFlags": [],
        "go.vetFlags": [],
        "go.coverOnSave": false,
        "go.useCodeSnippetsOnFunctionSuggest": true,
        "go.formatTool": "goreturns",
        "go.goroot": "/usr/local/go",
        "go.gopath": "/home/liuzhan/GoLearning",
        "go.gocodeAutoBuild": false,
        "http.proxy": "https://goproxy.cn",
    }
    

    5.vscode launch.json設置

    屬性	說明
    name	定義配置名字
    type	指定語言,這里我們填go即可
    request	launch ,attach, 當需要對一個已經運行的的程序 debug 時才使用 attach,其他時候使用launch
    mode	對於 launch 有 auto, debug, remote, test, exec, 對於 attach只有local,remote
    program	指定包, 文件或者是二進制的絕對路徑
    env	調試程序時需要注入的環境變量, 例如:{ "ENVNAME": "ENVVALUE" }
    envFile	絕對路徑,env的值會覆蓋envFile的值
    args	需要傳給調試程序的命令行參數
    showLog	布爾值,是否在調試控制台打印日志, 一般為true
    logOutput	日志輸出目標, 使用逗號分隔達到使用多個組件輸出日志的目的 (debugger, gdbwire, lldbout, debuglineerr, rpc), 當 showLog 為 true 有效
    buildFlags	構建程序時需要傳遞給 Go 編譯器的 Flags
    build tags: 如果在構建時需要構建標簽, (比如:go build -tags=whatever_tag ), 則需要使用標簽buildFlags 並添加內容: "-tags=whatever_tag" ,如果你需要使用多個標簽時, 則需要使用單引號引起來,像這樣:"-tags='first_tag second_tag third_tag'"
    remotePath	如果mode為remote時, 需要指定調試文件所在服務器的絕對路徑
    processId	進程 id
    host	目標服務器地址
    port	目標端口
    ${workspaceFolder} 在工作區的的根目錄調試程序
    ${file} 調試當前文件
    ${fileDirname} 調試當前文件所屬的程序包
    
    上面是一些前置知識,目前需要的簡單運行和調試只需要這樣設置launch.json就行,在帶有main的函數文件中執行CTRL+F5,即可執行,相當於go run $file
    {
        // 使用 IntelliSense 了解相關屬性。 
        // 懸停以查看現有屬性的描述。
        // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Launch File",
                "type": "go",
                "request": "launch",
                "mode": "auto",
                "program": "${file}",
                "env": {},
                "args": []
            }
        ]
    }
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM