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目錄結構如下:
如果大家懶得去找測試用的網站代碼,就去我的百度網盤下載吧,這個示範代碼來自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