帶你學夠浪:Go語言基礎系列-環境配置和 Hello world

文章每週持續更新,原創不易,「三連」讓更多人看到是對我最大的確定。能夠微信搜索公衆號「 後端技術學堂 」第一時間閱讀(通常比博客早更新一到兩篇)css

前面幾周陸陸續續寫了一些後端技術的文章,包括數據庫、微服務、內存管理等等,我比較傾向於成體系的學習,因此數據庫和微服務還有後續系列文章補充。linux

最近工做上比較多的 Golang 編程,如今不少互聯網公司都在轉向 Golang 開發,因此打算寫一寫有關 Go 語言學習的系列文章,目標是從 Go 基礎到進階輸出一系列文章,沉澱下這些知識同時也給你們作參考,力求作到通俗易懂,即便你是 Golang 小白也能看懂,若是你是老手也能溫故知新。golang

本文將要和你分享 linux 下安裝 Golang 環境,而且講解如何經過配置 VSCode 遠程開發調試 Golang 程序。shell

下載源碼

你能夠用系統自帶的包管理工具好比 yumapt-get 來安裝Golang開發環境。不過,爲了通用性,我選擇經過源碼的方式來安裝和講解,在官網下載源碼,下載地址 https://golang.org/dl/數據庫

官方下載界面.png

手動安裝

解壓安裝

我這裏下載下來的源碼包 go1.14.2.linux-amd64.tar.gz 放到遠程 Linux 服務器目錄下。執行如下命令安裝到 /usr/local 目錄。編程

tar -zxvf -C /usr/local/ `go1.14.2.linux-amd64.tar.gz`

建立工做空間

工做空間是你Go項目的「工做目錄」,挑選一個合適目錄,執行下面操做:json

mkdir GoPath
mkdir -p GoPath/src
mkdir -p GoPath/bin
mkdir -p GoPath/pkg

三個目錄含義:後端

src: 源碼路徑(例如:.go、.c、.h、.s 等)
  pkg: 編譯包時,生成的.a文件存放路徑
  bin: 編譯生成的可執行文件路徑

配置環境變量

安裝過程當中有這麼幾個環境變量須要配置,先來了解一下:服務器

GOROOT:Go的安裝路徑,也就是前面咱們解壓到的目錄 /usr/local/go微信

GOBIN:Go項目的二進制文件存放目錄。

GOPATH:Go的工做空間。前面有介紹的工做空間目錄。

/etc/profile 文件追加如下內容完成設置。

export GOROOT=/usr/local/go
export GOPATH=/yourpath/GoPath # 設置你本身的GoPath路徑 
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin  # 加入到PATH環境變量
export PATH=$PATH:$GOPATH/bin
# source /etc/profile #當即生效

驗證安裝

# go version  #檢查版本
# go version go1.14.2 linux/amd64 # 輸出版本號

若是看到版本信息就表明安裝成功了!

遠程開發

上面咱們在 Linux 環境下安裝好了 Golang 開發環境,但我不想每次打開終端登陸服務器編寫調試程序,怎麼才能在本地PC開發調試Golang程序呢?

看過我上一篇Vscode遠程開發的小夥伴應該能想到方法,咱們就要用Vscode搭建Golang遠程開發環境。具體的遠程開發配置能夠查看個人另外一篇文章。

Golang開發插件

首先安裝官方推薦的 Go 開發插件,以下,點他安裝。

Go插件

接着還會出現以下的提示,是由於缺乏其餘 Go 開發相關插件,點 install all 全都裝上就行。

安裝全部插件

Hello World

編程界有個慣例,什麼語言開始學習都是從 Hello World 開始。如今,咱們就用 Golang 編寫第一個 HelloWorld 程序吧。

上代碼:

package main // 全部Go程序從main包開始運行

import "fmt" // 導入fmt包

func main() {
	fmt.Print("hello world", " i am ready to go :)\n")
	fmt.Println("hello world", "i am ready to go :)")
}

格式化 包

fmt 實現了相似 C++/C 語言的格式IO庫功能。

PrintPrintln 均可用於打印輸出,可是功能略有不一樣。能夠看到我在Print 函數中,對後一個字符串加了空格和換行符,這樣兩個打印出來的結果是相同的。

Print

func Print(a ...interface{}) (n int, err error)

Print採用默認格式將其參數格式化並寫入標準輸出。若是兩個相鄰的參數都不是字符串,會在它們的輸出之間添加空格。返回寫入的字節數和遇到的任何錯誤。

Println

func Println(a ...interface{}) (n int, err error)

Println採用默認格式將其參數格式化並寫入標準輸出。老是會在相鄰參數的輸出之間添加空格並在輸出結束後添加換行符。返回寫入的字節數和遇到的任何錯誤。

調試

終端調試

在終端命令行源碼所在目錄輸入go run 運行程序。

# go run HelloWorld.go 
//輸出
hello world i am ready to go :)
hello world i am ready to go :)

也能夠先編譯go build 獲得可執行文件後再運行。

# go build HelloWorld.go 
# ls
HelloWorld  HelloWorld.go
# ./HelloWorld 
hello world i am ready to go :)
hello world i am ready to go :)

Vscode調試

F5啓動調試,編輯與調試控制檯輸出以下:

Vscode調試

命令行參數獲取

命令行參數能夠經過os 包的 Args 函數獲取,代碼以下:

package main

import (
	"fmt"
	"os"
	"strconv"
)

func main() {
	// 命令行參數獲取,os.Args第一個參數是程序自身
	fmt.Println(os.Args)
	for idx, args := range os.Args {
		fmt.Println("參數"+strconv.Itoa(idx)+":", args)
	}
}

終端設置

如下是帶參數argv1 argv2 運行golang程序和輸出。

# go run basic.go argv1 argv2 

# 輸出
[/tmp/go-build441686724/b001/exe/basic argv1 argv2]
參數0: /tmp/go-build441686724/b001/exe/basic
參數1: argv1
參數2: argv2

VSCode設置

launch.json文件的 args 屬性配置能夠設置程序啓動調試的參數。

vscode命令行參數設置

設置以後,按F5 啓動調試,就會在調試控制檯輸出配置的參數。

vscode帶參數調試輸出

環境變量獲取

命令行參數能夠經過os 包的 Getenv 函數獲取,代碼以下:

package main

import (
	"fmt"
	"os"
)

func main() {
	// 獲取環境變量
	fmt.Println(os.Getenv("type"), os.Getenv("name"), os.Getenv("GOROOT"))
}

VSCode設置環境變量

launch.json 文件的 args 屬性配置能夠設置 VSCode 調試的 Golang 程序環境變量。

設置的格式是:name:vaule 形式,注意都是字符串。

vscode環境變量設置

終端設置環境變量

終端的環境變量設置就是能夠用 Linux 的 export 命令設置,以後就能夠用 os.Getenv 函數讀取。

好比咱們最初設置 GOROOT 環境變量的命令

export GOROOT=/usr/local/go

就能夠用 os.Getenv("GOROOT") 讀取,比較簡單,這裏就很少說了。

總結

如今,你有了一個能夠遠程開發調試 Golang 的環境,趕忙去寫個 hello world 體驗一下吧!今天的分享就到這,下一篇文章講解基礎語法。

老規矩,感謝各位的閱讀,文章的目的是分享對知識的理解,技術類文章我都會反覆求證以求最大程度保證準確性,若文中出現明顯紕漏也歡迎指出,咱們一塊兒在探討中學習。今天的技術分享就到這裏,咱們下期再見。

Reference

設置GOPATH

Visual Studio Code變量參考

Golang 獲取系統環境變量

os庫獲取命令行參數

原創不易,不想被白票,若是在我這有收穫,就動動手指「點贊」和「轉發」是對我持續創做的最大支持。

能夠微信搜索公衆號「 後端技術學堂 」回覆「資料」「1024」有我給你準備的各類編程學習資料。文章每週持續更新,咱們下期見!

相關文章
相關標籤/搜索