Go 学习笔记(1)— Ubuntu 系统 Go 环境搭建、VS Code 配置 Go 开发环境、VS Code 远程开发配置
1. 安裝說明
Ubuntu 下直接安裝 Go 1.11 版本編譯器時需要依賴 Go 1.4 版本。所以如果在使用 apt-get install go安裝時參考以下鏈接安裝:https://blog.csdn.net/y5492853/article/details/79932882
國外官網 https://golang.org/dl/
國內官網 https://golang.google.cn/dl/
 
2. 安裝 Go 1.12
- 下載安裝包
wget https://dl.google.com/go/go1.12.4.linux-amd64.tar.gz
- 解壓至 /usr/local目錄
sudo tar -C /usr/local -xzf go1.12.4.linux-amd64.tar.gz
- 修改環境變量
vi ~/.profile
在文件后面增加
export GOROOT="/usr/local/go"    // Go 的安裝目錄。也就是剛才解壓縮指定的路徑
export GOPATH=$HOME/gocode      // 本機配置的 Go 代碼目錄
export GOBIN=$GOPATH/bin    // Go 代碼編譯后的可執行文件存放目錄
export PATH=$PATH:$GOPATH:$GOBIN:$GOROOT/bin    // 將 Go 安裝目錄添加進操作系統 PATH 路徑
- 保存并退出,并執行
source ~/.profile
- 重啟系統
- 查看是否安裝成功
wohu@wohu:~$ go version
go version go1.12.4 linux/amd64
3. 第一個 Go 程序
一個常見的 Go 工程的基本結構聲明流程如下:
- 包引用聲明。
- 標準庫或第三方開源庫引用。
- 常量聲明。
- 變量聲明。
- 結構體及其所屬方法聲明。
- 默認初始化方法聲明。
- 主函數聲明。
- 普通函數聲明。
代碼模板示例:
// 包引用
package main
// 庫引用
import "fmt"
// 常量聲明
const s1 = "wohu"
// 變量聲明
var s2 string = "wohu"
// 結構體及其所屬方法聲明
type T struct {}
func (t T) Func1() {}
// 初始化方法聲明
func init() {}
// 主函數聲明
func main() {
fmt.Println(s2)
}
// 普通函數聲明
func Func2() {}
新建一個文本文件 hello,并編輯以下內容,文本文件以 .go 為后綴名
package main    import "fmt"func main() {/*  注釋 */fmt.Println("Hello, World!")
}
執行以上代碼輸出
$ go run hello.go 
Hello, World!
3.1 程序結構說明
- package main
定義包名, 必須在源文件中非注釋的第一行指明這個文件屬于哪個包。package main 表示一個可獨立執行的程序,每個 Go 應用程序都包含一個名為 main 的包。
- import “fmt”
導入 fmt 包,fmt 包實現了格式化 IO(輸入/輸出)的函數。
- function main
func main() 是程序開始執行的函數。main 函數是每一個可執行程序所必須包含的,一般來說都是在啟動后第一個執行的函數(如果有 init() 函數則會先執行該函數)。
- /_ _/ 注釋
單行注釋是最常見的注釋形式,你可以在任何地方使用以 // 開頭的單行注釋。多行注釋也叫塊注釋,均已以 /*_ 開頭,并以 *_/ 結尾,且不可以嵌套使用,多行注釋一般用于包的文檔描述或注釋成塊的代碼片段。
- fmt.Println(…)
可以將字符串輸出到控制臺,并在最后自動增加換行字符 \n
- 行分隔符
在 Go 程序中,一行代表一個語句結束。每個語句不需要像 C 家族中的其它語言一樣以分號 ; 結尾,因為這些工作都將由 Go 編譯器自動完成。
如果你打算將多個語句寫在同一行,它們則必須使用;人為區分,但在實際開發中我們并不鼓勵這種做法。
- 標識符
標識符用來命名變量、類型等程序實體。一個標識符實際上就是一個或是多個字母(A-Z和a-z)數字(0-9)、下劃線_組成的序列,但是第一個字符必須是字母或下劃線而不能是數字。
當標識符(包括常量、變量、類型、函數名、結構字段等等)以一個大寫字母開頭,如:Group1,那么使用這種形式的標識符的對象就可以被外部包的代碼所使用(客戶端程序需要先導入這個包),這被稱為導出(像面向對象語言中的 public)。
標識符如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部是可見并且可用的(像面向對象語言中的 protected )。
- 空格
Go 語言中變量的聲明必須使用空格隔開,如: var age int
3.2 Go 源代碼特點
- 源程序以 .go為后綴
- 源程序默認為 UTF-8編碼
- 標識符區分大小寫
- 語句結尾的分號可以省略
- 函數以 func開頭,函數體開頭的{必須在函數頭所在行的尾部,不能單獨起一行
- 字符串字面量使用 " "雙引號括起來;字符字面量rune使用' '單引號括起來
- 調用包里面的方法使用 .點翻個訪問符,這一點和 Python 一樣
- main函數所在的包名必須為- main
- 強類型靜態編譯型語言
4. VS Code 配置 Go 語言開發環境
在使用 VS Code 配置 Go 開發環境安裝 Go 的相關插件時,會有類似如下的錯誤:
Error: Command failed: /usr/local/go/bin/go get -v github.com/ramya-rao-a/go-outline
由于種種原因,我們無法使用 VS Code 一鍵安裝對應的插件,所以需要手動的下載插件源碼包進行安裝。
4.1 創建 golang.org 目錄
創建 golang.org 目錄,并進入該目錄。
wohu@wohu:~$ mkdir -p $GOPATH/src/golang.org/x/
wohu@wohu:~$ cd $GOPATH/src/golang.org/x/
wohu@wohu:~/gocode/src/golang.org/x$
4.2 下載 golang.org 源碼
下載 golang.org工具源碼
wohu@wohu:~/gocode/src/golang.org/x$ git clone https://github.com/golang/tools.git;
wohu@wohu:~/gocode/src/golang.org/x$ git clone https://github.com/golang/lint.git;
wohu@wohu:~/gocode/src/golang.org/x$ git clone https://github.com/golang/sys.git; 
wohu@wohu:~/gocode/src/golang.org/x$ git clone https://github.com/golang/net.git;
wohu@wohu:~/gocode/src/golang.org/x$ git clone https://github.com/golang/text.git; 
wohu@wohu:~/gocode/src/golang.org/x$ git clone https://github.com/golang/crypto.git;
wohu@wohu:~/gocode/src/golang.org/x$ git clone https://github.com/golang/mod.git;
wohu@wohu:~/gocode/src/golang.org/x$ git clone https://github.com/golang/xerrors.git4.3 創建 github.com 目錄
wohu@wohu:/$ cd $GOPATH/src
wohu@wohu:~/gocode/src$ 
wohu@wohu:~/gocode/src$ mkdir github.com
wohu@wohu:~/gocode/src$ ls
github.com  golang.org
wohu@wohu:~/gocode/src$ cd github.com/
wohu@wohu:~/gocode/src/github.com$
4.4 下載 github.com 源碼
創建一個 download.sh 的腳本, 然后將以下內容拷貝進去。
#!/bin/bash
cd $GOPATH/src;
mkdir github.com;
cd $GOPATH/src/github.com;
mkdir acroca cweill derekparker go-delve josharian karrick mdempsky pkg ramya-rao-a rogpeppe sqs uudashr ;
cd $GOPATH/src/github.com/acroca;
git clone https://github.com/acroca/go-symbols.git;
cd $GOPATH/src/github.com/cweill;
git clone https://github.com/cweill/gotests.git;
cd $GOPATH/src/github.com/derekparker;
git clone https://github.com/derekparker/delve.git;
cd $GOPATH/src/github.com/go-delve;
git clone https://github.com/go-delve/delve.git;
cd $GOPATH/src/github.com/josharian;
git clone https://github.com/josharian/impl.git;
cd $GOPATH/src/github.com/karrick;
git clone https://github.com/karrick/godirwalk.git;
cd $GOPATH/src/github.com/mdempsky;
git clone https://github.com/mdempsky/gocode.git;
cd $GOPATH/src/github.com/pkg;
git clone https://github.com/pkg/errors.git;
cd $GOPATH/src/github.com/ramya-rao-a;
git clone https://github.com/ramya-rao-a/go-outline.git;
cd $GOPATH/src/github.com/rogpeppe;
git clone https://github.com/rogpeppe/godef.git;
cd $GOPATH/src/github.com/sqs;
git clone https://github.com/sqs/goreturns.git;
cd $GOPATH/src/github.com/uudashr;
git clone https://github.com/uudashr/gopkgs.git;
執行該腳本。
wohu@wohu:~/gocode/src/github.com$ sh download.sh 
4.5 創建安裝腳本并執行
創建安裝腳本 install.sh,并拷貝以下內容。
#!/bin/bash
cd $GOPATH/src
go install github.com/mdempsky/gocode
go install github.com/uudashr/gopkgs/cmd/gopkgs
go install github.com/ramya-rao-a/go-outline
go install github.com/acroca/go-symbols
go install github.com/rogpeppe/godef
go install github.com/sqs/goreturns
go install github.com/derekparker/delve/cmd/dlv
go install github.com/cweill/gotests
go install github.com/josharian/impl
go install golang.org/x/tools/cmd/guru
go install golang.org/x/tools/cmd/gorename
go install golang.org/x/lint/golint
4.6 安裝插件腳本合集
也可以忽略步驟 1-5,直接用下面的腳本進行安裝,簡單快捷。
#!/bin/bash
cd $GOPATH/src;
mkdir github.com;
cd $GOPATH/src/github.com;
mkdir acroca cweill derekparker go-delve josharian karrick mdempsky pkg ramya-rao-a rogpeppe sqs uudashr ;
cd $GOPATH/src/github.com/acroca;
git clone https://github.com/acroca/go-symbols.git;
cd $GOPATH/src/github.com/cweill;
git clone https://github.com/cweill/gotests.git;
cd $GOPATH/src/github.com/derekparker;
git clone https://github.com/derekparker/delve.git;
cd $GOPATH/src/github.com/go-delve;
git clone https://github.com/go-delve/delve.git;
cd $GOPATH/src/github.com/josharian;
git clone https://github.com/josharian/impl.git;
cd $GOPATH/src/github.com/karrick;
git clone https://github.com/karrick/godirwalk.git;
cd $GOPATH/src/github.com/mdempsky;
git clone https://github.com/mdempsky/gocode.git;
cd $GOPATH/src/github.com/pkg;
git clone https://github.com/pkg/errors.git;
cd $GOPATH/src/github.com/ramya-rao-a;
git clone https://github.com/ramya-rao-a/go-outline.git;
cd $GOPATH/src/github.com/rogpeppe;
git clone https://github.com/rogpeppe/godef.git;
cd $GOPATH/src/github.com/sqs;
git clone https://github.com/sqs/goreturns.git;
cd $GOPATH/src/github.com/uudashr;
git clone https://github.com/uudashr/gopkgs.git;cd $GOPATH/src;
mkdir -p golang.org/x;
cd golang.org/x;
git clone https://github.com/golang/tools.git;
git clone https://github.com/golang/lint.git;
git clone https://github.com/golang/sys.git;	
git clone https://github.com/golang/net.git;	
git clone https://github.com/golang/mod.git;
git clone https://github.com/golang/xerrors.git;
git clone https://github.com/golang/text.git;
git clone https://github.com/golang/crypto.git;cd $GOPATH/src;
go install github.com/mdempsky/gocode;
go install github.com/uudashr/gopkgs/cmd/gopkgs;
go install github.com/ramya-rao-a/go-outline;
go install github.com/acroca/go-symbols;
go install github.com/rogpeppe/godef;
go install github.com/sqs/goreturns;
go install github.com/derekparker/delve/cmd/dlv;
go install github.com/cweill/gotests;
go install github.com/josharian/impl;
go install golang.org/x/tools/cmd/guru;
go install golang.org/x/tools/cmd/gorename;
go install golang.org/x/lint/golint;
go install golang.org/x/tools/gopls;
總結:
- gocode用于代碼只能提示
- delve用于調試源碼
- gopkgs用于對當前文件實現智能的包導入
- golint用于在保存文件時檢查語法
- godef用于跳轉到定義包
- gopls是官方的語言服務器- Go Language Server,也可以實現- Go語言的代碼智能提示和跳轉到定義包等功能
5. VS Code 遠程開發配置
如果要使用 VS Code 進行遠程連接服務器進行開發時,請參考以下鏈接進行相應的配置:
Win10環境下配置VScode遠程開發ssh-remote(免密登錄)
VSCode 配置阿里云CentOS 7.6 遠程開發
VSCode安裝GO語言依賴工具
Windows64 Visual Studio Code 安裝go插件失敗分析及解決方案
windows下 go vscode編譯運行方法
vsCode保存時代碼自動格式化
總結
以上是生活随笔為你收集整理的Go 学习笔记(1)— Ubuntu 系统 Go 环境搭建、VS Code 配置 Go 开发环境、VS Code 远程开发配置的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: “露销妆脸泪新干”上一句是什么
- 下一篇: 求一个时间改变自己个性签名
