Go語言備忘——在Ubuntu 18.04下的安裝、環境配置與VS Code插件安裝

1. 通過snap安裝。

如果還未安裝snap,請使用以下命令安裝

sudo apt install snap

安裝好snap後,使用以下命令安裝go。

sudo snap install go --classic

之所以使用snap,是爲了安裝最新版的Go。目前(2020年10月27日),安裝後的版本是1.15.3。版本查詢命令如下:

go version

查看go的環境配置的命令如下:

go env

<br/>

2. 配置

編輯主目錄下的.profile文件:

gedit ~/.profile

添加以下內容:

# GOPATH
export GOPATH=$HOME/tree/lakeside/go
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:$GOPATH/bin:/snap/go/current/bin
export GOPROXY=https://goproxy.cn,direct

GOPATH是工作路徑,默認安裝後是在~/go目錄,這裏我修改成自己想要的目錄。

/snap/go/current/bin目錄是通過snap安裝後的默認安裝目錄,即GOROOT。其中的current是一個鏈接,指向的是實際安裝目錄,我這裏是/snap/go/5759/。

GOPROXY設置對我們後面安裝各種工具插件很重要,默認的GOPROXY基本上是安裝不了的。注意direct與逗號之間沒有空格。

編輯好.profile文件並保存後,執行以下命令讓設置生效:

source ~/.profile

可以再用go env命令查看環境是否改變。 <br/>

3. 安裝Visual Studio Code插件

使用vs code編輯某個xxx.go文件時,會自動提示安裝各種插件。如果不想一個一個的安裝,就點“install all”安裝所有。 <br/>

4. 一個Web服務器小例子

hello world這樣的例子實在無聊,我們舉一個稍微複雜點的例子。

4.1 編寫main.go程序

隨便在一個目錄下創建文件夾WebServer,不用非在GOPATH目錄下。編寫文件main.go,代碼如下:

// 開源中國,陸巍
package main

import (
	"bufio"
	"fmt"
	"log"
	"net/http"
	"os"
	"time"

	"github.com/gorilla/mux"
)

func ReadWebpageFile(filename string) string {
	file, err := os.Open(filename)
	if err != nil {
		fmt.Println("Error: ", err.Error())
		return ""
	}
	defer file.Close()

	stats, statsErr := file.Stat()
	if statsErr != nil {
		fmt.Println("Error: ", statsErr.Error())
		return ""
	}

	var size int64 = stats.Size()
	codes := make([]byte, size)
	bufr := bufio.NewReader(file)
	_, err = bufr.Read(codes)
	return string(codes)
}

func home(w http.ResponseWriter, r *http.Request) {
	pageCode := ReadWebpageFile("static/index.html")
	w.Write([]byte(pageCode))
}

func main() {
	fmt.Println("Server start...")
	r := mux.NewRouter().StrictSlash(false) // 不會嚴格匹配斜槓

	// 頁面響應
	r.HandleFunc("/", home).Methods("GET")

	// 映射圖片目錄。第一個參數的目錄名一定要在兩邊加上斜槓
	r.PathPrefix("/img/").Handler(http.StripPrefix("/img/",
		http.FileServer(http.Dir("static/img/"))))
	r.PathPrefix("/css/").Handler(http.StripPrefix("/css/",
		http.FileServer(http.Dir("static/css/"))))
	r.PathPrefix("/js/").Handler(http.StripPrefix("/js/",
		http.FileServer(http.Dir("static/js/"))))

	// 定義服務器
	svr := http.Server{
		Addr:         ":8000",
		ReadTimeout:  3 * time.Second,
		WriteTimeout: 3 * time.Second,
		Handler:      r,
	}

	log.Fatal(svr.ListenAndServe())
}

注意事項: 1、代碼裏面設置的端口是8000,所以訪問這個服務器的時候,地址是:http://localhost:8000 2、代碼裏面默認調用當前目錄下static文件夾裏面的index.html文件。 <br/>

4.2 創建mod

在WebServer目錄下,執行命令:

go mod init WebServer

執行後會創建go.mod文件。 <br/>

4.3 編譯
go build main.go

在main.go代碼中,調用了第三方庫,編譯時會自動下載添加。編譯好後,就可以找一些網頁代碼來測試了。 <br/>

4.4 加入一個簡單的網站代碼

WebServer目錄結構如下: Go語言簡單網站代碼

如果大家懶得去找測試用的網站代碼,就去我的百度網盤下載吧,這個示範代碼來自http://www.lmlblog.com/網站,我減了很多內容。下載地址(包含go代碼,文件名WebServer.zip):https://pan.baidu.com/s/1ui1uyPzW60zPRKvgyv2R1Q,提取碼:apk3。

加好網站代碼後,執行命令:

./main

然後打開瀏覽器,輸入地址:http://localhost:8000


下面第一張圖是從臺式機上瀏覽的效果,第二張是從手機上瀏覽的效果: 網站效果示例一

網站效果示例二


附帶介紹snap的一些命令
a. 查詢snap內軟件列表
snap find
snap find mailspring

snap find後面如果不帶軟件名稱的話,顯示出來的是推薦列表。上面的第二個命令是查詢mailspring方面的軟件列表。 <br/>

b. 查詢snap上相關軟件可用版本信息
snap info ...

示例,查詢go與mailspring的信息:

snap info go
snap info mailspring

<br/>

c. 查詢本機通過snap安裝的軟件列表
snap list
d. 更新命令
sudo snap refresh
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章