欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言編譯環(huán)境設(shè)置教程

 更新時(shí)間:2025年07月22日 11:05:53   作者:富士康質(zhì)檢員張全蛋  
Go語言支持高并發(fā)(goroutine)、自動(dòng)垃圾回收,編譯為跨平臺(tái)二進(jìn)制文件,云原生兼容且社區(qū)活躍,開發(fā)便捷,內(nèi)置測試與vet工具輔助檢測錯(cuò)誤,依賴模塊化管理,提升開發(fā)效率

Go語言優(yōu)勢

  • 天生支持高并發(fā)

可以自由的去控制其并發(fā)量,也就是攜程,通過go routine關(guān)鍵字就行了。

  • 自動(dòng)垃圾回收機(jī)制
  • 內(nèi)存的清理
  • 不需要環(huán)境依賴

在運(yùn)行g(shù)o程序的時(shí)候是以二進(jìn)制的方式進(jìn)行運(yùn)行,go build之后是生成二進(jìn)制文件。

像windows的exec一樣,直接丟到Linux上面執(zhí)行就行了,不需要安裝任何環(huán)境。

  • 云原生無縫接入
  • 社區(qū)活躍度
  • 易上手

下載 Go  配置編譯環(huán)境

如果要編寫和閱讀代碼,首先要編譯安裝這個(gè)語言的編譯環(huán)境, 

  • Go 安裝文件以及源代碼 https://golang.google.cn/dl/
  • 下載對(duì)應(yīng)平臺(tái)的二進(jìn)制文件并安裝
  • 環(huán)境變量

GOROOT

  • go 的安裝路徑

GOPATH

  • src:存放源代碼
  • pkg:存放依賴包,三方庫的安裝路徑
  • bin:存放可執(zhí)行文件

如果是新環(huán)境需要?jiǎng)?chuàng)建 /Users/lulei/go/src/github.com這個(gè)目錄的,在這個(gè)目錄里面就可以去克隆GitHub的地址。

lulei@luleideMacBook-Pro github.com % pwd
/Users/lulei/go/src/github.com
 
lulei@luleideMacBook-Pro github.com % ls
astaxie		cespare		hashicorp	mitchellh	prometheus
beorn7		golang		lovekeepcoding	pkg		shiena
 
PS C:\Users\lucas\GolandProjects\awesomeProject> go env
set GOROOT=C:/Users/lucas/sdk/go1.21.11
 
set GOPATH=C:\Users\lucas\go
C:\Users\lucas\go\pkg\mod\cache

其他常用變量

GOOS,GOARCH,GOPROXY

國內(nèi)用戶建議設(shè)置goproxy:export GOPROXY=https://goproxy.cn(因?yàn)榉阑饓Φ脑颍枚嘁蕾嚢菬o法直接拉取的,設(shè)置這個(gè)那么會(huì)通過這個(gè)代理去拉)

配置 GOPROXY

Go默認(rèn)的GOPROXY的值是:GOPROXY=https://proxy.golang.org,direct。

這個(gè)goproxy在使用go get安裝第三方庫的時(shí)候會(huì)報(bào)錯(cuò),導(dǎo)致無法下載成功,所以必須要修改一下。

  • windows使用如下命令
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
  • linux/macos 
export GO111MODULE=on
export GOPROXY=https://goproxy.io

IDE 設(shè)置(VS Code)

下載并安裝 Visual Studio Code  https://code.visualstudio.com/download

安裝 Go 語言插件  https://marketplace.visualstudio.com/items?itemName=golang.go

其他可選項(xiàng)

  • Intellj goland,收費(fèi)軟件
  • vim,sublime等

一些基本命令

項(xiàng)目執(zhí)行方式有兩種,第一種go build,生成二進(jìn)制文件main.exe,直接執(zhí)行即可。

PS C:\Users\lucas\GolandProjects\awesomeProject> go build main.go    

編譯產(chǎn)生一個(gè)二進(jìn)制文件

其次就是go run main.go,先將main.go去編譯了,編譯好之后直接執(zhí)行,然后可執(zhí)行文件是不保留的。

 PS C:\Users\lucas\GolandProjects\awesomeProject> go run main.gohello golang

  • build:從源代碼構(gòu)建成可執(zhí)行文件 
  • get:下載一個(gè)包
  • install:go install從github上面下載某一個(gè)包并且安裝到本地,相當(dāng)于是編譯安裝,所以很多時(shí)候開發(fā)一個(gè)go語言項(xiàng)目,上傳到GitHub上面,你希望別人可以使用你的項(xiàng)目,如果go get會(huì)將源代碼下載下來,如果是go install那么會(huì)將源代碼下載下來,編譯完成直接安裝,接下來就可以直接使用。
module awesomeProject2

go 1.16

require github.com/lovekeepcoding/testmath v0.0.0-20220225034816-3d3a22d574b6 // indirect


lulei@luleideMacBook-Pro awesomeProject2 % go get github.com/lovekeepcoding/testmath
go get: added github.com/lovekeepcoding/testmath v0.0.0-20220225034816-3d3a22d574b6
  • module 用來做依賴管理的
  • test 用來做單元測試的

Go build

Go 語言不支持動(dòng)態(tài)鏈接,因此編譯時(shí)會(huì)將所有依賴編譯進(jìn)同一個(gè)二進(jìn)制文件。(無論拷貝到任何環(huán)境里面,因?yàn)樗幸蕾嚩紩?huì)被編譯到一起,所以可以順利運(yùn)行的,代價(jià)就是安裝包會(huì)大一些)

指定輸出目錄。(go build 將go語言的源代碼編譯成一個(gè)二進(jìn)制文件)

go build –o bin/mybinary .

lulei@luleideMacBook-Pro awesomeProject4 % go build
lulei@luleideMacBook-Pro awesomeProject4 % ls
awesomeProject4 go.mod          main.go
lulei@luleideMacBook-Pro awesomeProject4 % ./awesomeProject4 
3

在構(gòu)建的時(shí)候源代碼分離

常用環(huán)境變量設(shè)置編譯操作系統(tǒng)和 CPU 架構(gòu)。

GOOS=linux GOARCH=amd64 go build

全支持列表。

$GOROOT/src/go/build/syslist.go

Go test

Go 語言原生自帶測試

import "testing"
func TestIncrease(t *testing.T) {
t.Log("Start testing")
increase(1, 2)
}

寫任何程序的時(shí)候,都需要去做單元測試,如何驗(yàn)證你寫的代碼是否健壯呢?

一種是手工測試,手工測試會(huì)有問題,當(dāng)你的程序不斷的改進(jìn)修改,重復(fù)的手工測試會(huì)使得你的整個(gè)開發(fā)效率非常低,所以在整個(gè)開發(fā)過程當(dāng)中都會(huì)有要求,我寫的業(yè)務(wù)邏輯都是需要對(duì)應(yīng)編寫測試用例的,這個(gè)測試用例第一步就是單元測試。

單元測試是面向代碼的,比如說你寫了一個(gè)函數(shù),你需要驗(yàn)證這個(gè)函數(shù)在各種情況下的行為是否正常,你們就需要寫很多的測試用例,go語言原生自帶單元測試的支持。

  • go test ./… -v 運(yùn)行測試
  • go test命令掃描所有*_test.go為結(jié)尾的文件,慣例是將測試代碼與正式代碼放在同目錄, 如 foo.go 的測試代碼一般寫在 foo_test.go

編寫測試用例的時(shí)候,會(huì)將單測的代碼和主代碼放在一個(gè)包,這樣的好處是私有函數(shù),私有的變量都可以在單測里面被引用到。

Go vet

有些錯(cuò)誤并不明顯,這個(gè)錯(cuò)誤并不會(huì)影響編譯。但是它本身的邏輯會(huì)有一些小的瑕疵,在某些情況下可能會(huì)引發(fā)一些問題,針對(duì)這些情況,提供了上面這條命令。

它會(huì)檢測出程序運(yùn)行當(dāng)中可能出現(xiàn)的問題,比如下面??這些。

在多線程里面,哪個(gè)線程先執(zhí)行,哪個(gè)線程后執(zhí)行,這是不能確保的,如果主線程啟動(dòng)了一些子線程去運(yùn)行,主線程立馬退出了,很可能子線程還沒有被正確的執(zhí)行,就會(huì)被一起退出。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • GO中什么情況會(huì)使用變量逃逸

    GO中什么情況會(huì)使用變量逃逸

    本文主要介紹了GO中什么情況會(huì)使用變量逃逸,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • go rate 原生標(biāo)準(zhǔn)限速庫的使用

    go rate 原生標(biāo)準(zhǔn)限速庫的使用

    本文主要介紹了Go標(biāo)準(zhǔn)庫golang.org/x/time/rate實(shí)現(xiàn)限流,采用令牌桶算法控制請(qǐng)求速率,提供Allow/Reserve/Wait方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-05-05
  • Golang?errgroup?設(shè)計(jì)及實(shí)現(xiàn)原理解析

    Golang?errgroup?設(shè)計(jì)及實(shí)現(xiàn)原理解析

    這篇文章主要為大家介紹了Golang?errgroup?設(shè)計(jì)及實(shí)現(xiàn)原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • golang框架中跨服務(wù)的最佳通信協(xié)議和工具

    golang框架中跨服務(wù)的最佳通信協(xié)議和工具

    在 go 框架中實(shí)現(xiàn)跨服務(wù)通信的最佳實(shí)踐包括使用 grpc(適用于低延遲高吞吐量)、http 客戶端(適用于 restful api)和消息隊(duì)列(適用于異步解耦通信),在選擇通信方式時(shí),應(yīng)考慮服務(wù)交互模式、性能要求和部署環(huán)境等因素
    2024-06-06
  • Golang中g(shù)RPC內(nèi)置Trace的實(shí)現(xiàn)

    Golang中g(shù)RPC內(nèi)置Trace的實(shí)現(xiàn)

    gRPC內(nèi)置了基于golang.org/x/net/trace包的客戶端和服務(wù)端請(qǐng)求追蹤,默認(rèn)開啟狀態(tài),可以查看事件和請(qǐng)求日志,幫助調(diào)試,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • 詳解使用Go添加Nginx代理的方法示例

    詳解使用Go添加Nginx代理的方法示例

    這篇文章主要介紹了詳解使用Go添加Nginx代理的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Go語言中未知異常捕獲的多種場景與實(shí)用技巧

    Go語言中未知異常捕獲的多種場景與實(shí)用技巧

    在Go語言編程中,異常處理是確保程序健壯性的關(guān)鍵環(huán)節(jié),與一些其他編程語言不同,Go沒有傳統(tǒng)的try - catch結(jié)構(gòu)化異常處理機(jī)制,本文將深入探討Go語言中未知異常捕獲的多種場景與實(shí)用技巧,需要的朋友可以參考下
    2024-11-11
  • go語言中json數(shù)據(jù)的讀取和寫出操作

    go語言中json數(shù)據(jù)的讀取和寫出操作

    這篇文章主要介紹了go語言中json數(shù)據(jù)的讀取和寫出操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • go語言通過odbc操作Access數(shù)據(jù)庫的方法

    go語言通過odbc操作Access數(shù)據(jù)庫的方法

    這篇文章主要介紹了go語言通過odbc操作Access數(shù)據(jù)庫的方法,實(shí)例分析了Go語言通過odbc連接、查詢與關(guān)閉access數(shù)據(jù)庫的技巧,需要的朋友可以參考下
    2015-03-03
  • Golang?中判斷兩個(gè)結(jié)構(gòu)體相等的方法

    Golang?中判斷兩個(gè)結(jié)構(gòu)體相等的方法

    這篇文章主要介紹了Golang?中如何判斷兩個(gè)結(jié)構(gòu)體相等,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08

最新評(píng)論