天天看點

go語言學習筆記(1)——基礎環境

作者:fana

入門介紹

go語言(或 Golang)是Google開發的開源程式設計語言,誕生于2006年1月2日下午15點4分5秒,于2009年11月開源,2012年釋出go穩定版。Go語言在多核并發上擁有原生的設計優勢,Go語言從底層原生支援并發,無須第三方庫、開發者的程式設計技巧和開發經驗。

go是非常年輕的一門語言,它的主要目标是兼具Python 等動态語言的開發速度和C/C++等編譯型語言的性能與安全性

go适合做什麼

  • 服務端開發
  • 分布式系統,微服務
  • 網絡程式設計
  • 區塊鍊開發
  • 記憶體KV資料庫,例如boltDB、levelDB
  • 雲平台

學習Go語言的前景

目前Go語言已經⼴泛應用于人工智能、雲計算開發、容器虛拟化、⼤資料開發、資料分析及科學計算、運維開發、爬蟲開發、遊戲開發等領域。

Go語言簡單易學,天生支援并發,完美契合當下高并發的網際網路生态。Go語言的崗位需求持續高漲,目前的Go程式員數量少,待遇好。

抓住趨勢,要學會做一個領跑者而不是跟随者。

國内Go語言的需求潛力巨大,目前無論是國内大廠還是新興網際網路公司基本上都會有Go語言的崗位需求。

Go語言的并發是基于 goroutine 的,goroutine 類似于線程,但并非線程。可以将 goroutine 了解為一種虛拟線程。Go 語言運作時會參與排程 goroutine,并将 goroutine 合理地配置設定到每個 CPU 中,最大限度地使用CPU性能。開啟一個goroutine的消耗非常小(大約2KB的記憶體),你可以輕松建立數百萬個goroutine。

goroutine的特點:

  • goroutine具有可增長的分段堆棧。這意味着它們隻在需要時才會使用更多記憶體。
  • goroutine的啟動時間比線程快。
  • goroutine原生支援利用channel安全地進行通信。
  • goroutine共享資料結構時無需使用互斥鎖。

開發環境

官網:https://golang.org/dl/

中文社群:https://studygolang.com/dl

安裝go環境

go語言學習筆記(1)——基礎環境

windows

1.輕按兩下後點選下一步安裝就行           
go語言學習筆記(1)——基礎環境
go語言學習筆記(1)——基礎環境

GOROOT是程式安裝的目錄

GOPATH是一個環境變量,用來表明你寫的go項目的存放路徑

然後$GOPATH建立三個檔案夾

  • bin:存放編譯後生成的可執行檔案
  • pkg:存放編譯後生成的包/庫的歸檔檔案
  • src:存放項目和庫的源檔案

最後驗證

> go version
go version go1.17.3 windows/amd64
> go env
set GOROOT=D:\Application\Golang //安裝時所在的目錄絕對路徑
set GOPATH=D:\System\Code\Golang //工作區所在的絕對目錄
set GOPROXY=https://proxy.golang.org,direct  //go代理位址
set GOSUMDB=sum.golang.org //用于檢驗module正确性的伺服器位址,預設值為sum.golang.org
set GONOPROXY="公司代碼位址" //用于配置不走goproxy的代碼位址,公司内代碼倉庫
set GONOSUMDB="公司代碼位址" //公司内部的代碼在SUMDB也是無法校驗的

// GOPROXY=https://proxy.golang.org,direct 由于國内通路不到,是以我們需要換一個proxy,這裡推薦使用https://goproxy.io或https://goproxy.cn。

go env -w GOPROXY=https://goproxy.cn,direct //執行指令修改
go env -w GO111MODULE=auto //開啟go module支援           

linux

1.解壓
tar -zxvf go1.20.linux-amd64.tar.gz

2.設定環境變量
sudo vi /etc/profile
export GOROOT=/usr/local/go  ##Golang安裝目錄
export GOPATH=/home/go  ##Golang項目目錄
export PATH=$PATH:$GOROOT/bin

source /etc/profile
#按esc退出編輯模式, 按:wq儲存檔案
go version           

編輯器

vs code

下載下傳位址:https://code.visualstudio.com/

Visual Studio Code,簡稱VS Code,它是目前使用人數最多的編輯器。盡管它由微軟釋出于2015年,與其他熱門編輯器相比顯得有些年輕,但它在過去幾年中一直在不停的更新,它在最新的Stack Overflow調查中被選為Web開發人員中最受歡迎的文本編輯器。

VS Code不僅僅是一個基本的代碼編輯器。有人說它更像是IDE而不是代碼編輯器,因為它提供了許多通常隻在IDE中才有的功能。主要功能包括内置調試工具,智能代碼提示,內建終端以及對簡易的Git操作(微軟剛收購了GitHub)。作為初學者,您可以利用這些功能大大提高程式設計效率。

在 VS Code中找到的每個功能都完成一項出色的工作,建構了一些簡單的功能集,包括文法高亮、智能補全、內建 git 和編輯器内置調試工具等,将使你開發更高效。

編寫go代碼是會提示安裝插件,選擇install all,如果沒有提示,按住shift+ctrl+p輸入go:install/Update tools

go語言學習筆記(1)——基礎環境
go語言學習筆記(1)——基礎環境
//推薦插件
Go
Code Runner
GitHub Theme //設定主題
Indent-rainbow //彩色标簽縮進
Auto Import //自動導包
Auto Close Tag
Auto Rename Tag
Better Comments           
go語言學習筆記(1)——基礎環境
//1.vscode 好用的快捷鍵
行注釋: ctrl + /
塊注釋:shift + alt + a
删除行:ctrl + shift + k
豎行模式:ctrl + alt + 上下鍵

//2.代碼快捷指令
pkgm : main包+ main主函數
ff : fmt.Printf("", var)
for : for i := 0; i < count; i++ {}
forr : for _, v := range v {}
fmain: func main() {}           

GoLang

GoLang是Jetbrains家族的Go語言IDE

下載下傳位址:https://www.jetbrains.com/go/download

第一個go程式

package main  // 聲明 main 包,表明目前是一個可執行程式

import "fmt"  // 導入内置 fmt 

func main(){  // main函數,是程式執行的入口
    fmt.Println("Hello World!")  // 在終端列印 Hello World!
}


go run helloWorld.go  //運作go程式
go build  //在項目目錄下執行編譯成二進制包
go build -o xxx.exe //預設是項目檔案的名字,這樣可以改二進制包的名字           

跨平台編譯

//Windows編譯成linux執行的檔案
SET CGO_ENABLED=0  //禁用CGO
SET GOOS=linux  //目标平台是linux
SET GOARCH=amd64  //目标處理器架構是amd64
go build
//Windows編譯成mac可執行檔案
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build

//mac編譯linux可執行的檔案
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
//mac編譯成Windows可執行的檔案
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

//linux編譯成mac可執行檔案
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
//linux編譯Windows可執行檔案
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build           

go常用指令

//常用指令go help可以檢視
build: 編譯
run: 運作go程式
get: 下載下傳并安裝依賴包
install: 編譯并安裝包依賴

clean: 移除對象檔案
doc: 顯示包或者符号的文檔
env: 顯示環境變量資訊
bug: 啟動錯誤報告
generate: 從processing source生成go檔案
list: 列出包
test: 測試運作
version: 顯示go的版本
tool: 運作go提供的工具
vet: 運作go tool vet
fix: 運作go tool fix
fmt: 格式化           

代碼管理

go是使用包和子產品來組織代碼,包就是指檔案夾,子產品就是指.go結尾的檔案。

go get xxxx //下載下傳包
參數介紹:
-d 隻下載下傳不安裝
-f 隻有在你包含了 -u 參數的時候才有效,不讓 -u 去驗證 import 中的每一個都已經擷取了,這對于本地 fork 的包特别有用
-fix 在擷取源碼之後先運作 fix,然後再去做其他的事情
-t 同時也下載下傳需要為運作測試所需要的包
-u 強制使用網絡去更新包和它的依賴包
-v 顯示執行的指令

//go mod指令
init //初始化,建立go.mod檔案 go mod init project //初始化項目
download //下載下傳子產品到本地緩存
tidy //增加需要的依賴,删除不需要的依賴           
1.建立項目檔案夾:project
mkdir project

2.初始化項目:
go mod init project
//會生成 go.mod檔案
cat go.mod 
 module project
 go 1.19

3.建立包
mkdir helloWorld && cd helloWorld
vim helloWorld.go
 package helloworld
 
 func Hello() string {
    return "hello world!"
 }

4.建立檔案
vim ../main.go
package main

import (
    "fmt"
    helloworld "project/helloWorld"
)

func main() {
    s := helloworld.Hello()
    fmt.Printf("s: %v\n", s)
}

5.互相調用
go run main.go
//列印:s: hello world!           
go語言學習筆記(1)——基礎環境

繼續閱讀