日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Go 学习笔记(1)— Ubuntu 系统 Go 环境搭建、VS Code 配置 Go 开发环境、VS Code 远程开发配置

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

  1. 下載安裝包
wget https://dl.google.com/go/go1.12.4.linux-amd64.tar.gz
  1. 解壓至 /usr/local目錄
sudo tar -C /usr/local -xzf go1.12.4.linux-amd64.tar.gz
  1. 修改環境變量
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 路徑
  1. 保存并退出,并執行
source ~/.profile
  1. 重啟系統
  2. 查看是否安裝成功
wohu@wohu:~$ go version
go version go1.12.4 linux/amd64

3. 第一個 Go 程序

一個常見的 Go 工程的基本結構聲明流程如下:

  1. 包引用聲明。
  2. 標準庫或第三方開源庫引用。
  3. 常量聲明。
  4. 變量聲明。
  5. 結構體及其所屬方法聲明。
  6. 默認初始化方法聲明。
  7. 主函數聲明。
  8. 普通函數聲明。

代碼模板示例:

// 包引用
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.git

4.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 远程开发配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。