最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

Go語言優(yōu)勢

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

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

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

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

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

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

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

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

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

GOROOT

  • go 的安裝路徑

GOPATH

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

如果是新環(huán)境需要創(chuàng)建 /Users/lulei/go/src/github.com這個目錄的,在這個目錄里面就可以去克隆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(因為防火墻的原因,好多依賴包是無法直接拉取的,設(shè)置這個那么會通過這個代理去拉)

配置 GOPROXY

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

這個goproxy在使用go get安裝第三方庫的時候會報錯,導(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

其他可選項

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

一些基本命令

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

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

編譯產(chǎn)生一個二進(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:下載一個包
  • install:go install從github上面下載某一個包并且安裝到本地,相當(dāng)于是編譯安裝,所以很多時候開發(fā)一個go語言項目,上傳到GitHub上面,你希望別人可以使用你的項目,如果go get會將源代碼下載下來,如果是go install那么會將源代碼下載下來,編譯完成直接安裝,接下來就可以直接使用。
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 語言不支持動態(tài)鏈接,因此編譯時會將所有依賴編譯進(jìn)同一個二進(jìn)制文件。(無論拷貝到任何環(huán)境里面,因為所有依賴都會被編譯到一起,所以可以順利運(yùn)行的,代價就是安裝包會大一些)

指定輸出目錄。(go build 將go語言的源代碼編譯成一個二進(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)建的時候源代碼分離

常用環(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)
}

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

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

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

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

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

Go vet

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

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

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

總結(jié)

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

相關(guān)文章

  • Go語言基礎(chǔ)之網(wǎng)絡(luò)編程全面教程示例

    Go語言基礎(chǔ)之網(wǎng)絡(luò)編程全面教程示例

    這篇文章主要為大家介紹了Go語言基礎(chǔ)之網(wǎng)絡(luò)編程全面教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • go for range遍歷二維數(shù)組的示例

    go for range遍歷二維數(shù)組的示例

    今天小編就為大家分享一篇關(guān)于go for range遍歷二維數(shù)組的示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 聊聊golang的defer的使用

    聊聊golang的defer的使用

    這篇文章主要介紹了聊聊golang的defer的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • golang協(xié)程關(guān)閉踩坑實戰(zhàn)記錄

    golang協(xié)程關(guān)閉踩坑實戰(zhàn)記錄

    協(xié)程(coroutine)是Go語言中的輕量級線程實現(xiàn),下面這篇文章主要給大家介紹了關(guān)于golang協(xié)程關(guān)閉踩坑的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • Go語言如何并發(fā)超時處理詳解

    Go語言如何并發(fā)超時處理詳解

    大家都知道golang并沒有在語言層次上提供超時操作,但可以通過一些小技巧實現(xiàn)超時。下面來一起看看吧,有需要的朋友們可以參考借鑒。
    2016-09-09
  • Go 語言入門學(xué)習(xí)之正則表達(dá)式

    Go 語言入門學(xué)習(xí)之正則表達(dá)式

    這篇文章主要介紹了Go 語言入門學(xué)習(xí)之正則表達(dá)式,文章基于GO語言的相關(guān)資料展開詳細(xì)內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • Go中的函數(shù)選項模式(Functional Options Pattern)詳解

    Go中的函數(shù)選項模式(Functional Options Pattern)詳解

    在 Go 語言中,函數(shù)選項模式是一種優(yōu)雅的設(shè)計模式,用于處理函數(shù)的可選參數(shù),本文將對其進(jìn)行講解,準(zhǔn)備好了嗎,快跟隨著本文一探究竟吧
    2023-06-06
  • golang不到30行代碼實現(xiàn)依賴注入的方法

    golang不到30行代碼實現(xiàn)依賴注入的方法

    這篇文章主要介紹了golang不到30行代碼實現(xiàn)依賴注入的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 基于golang中container/list包的用法說明

    基于golang中container/list包的用法說明

    這篇文章主要介紹了基于golang中container/list包的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Go語言映射內(nèi)部實現(xiàn)及基礎(chǔ)功能實戰(zhàn)

    Go語言映射內(nèi)部實現(xiàn)及基礎(chǔ)功能實戰(zhàn)

    這篇文章主要為大家介紹了Go語言映射的內(nèi)部實現(xiàn)和基礎(chǔ)功能實戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2022-03-03

最新評論

岳普湖县| 常宁市| 横峰县| 灵武市| 台东市| 长子县| 石阡县| 富裕县| 巨鹿县| 安福县| 鄯善县| 德州市| 剑河县| 社会| 治县。| 镇坪县| 滕州市| 墨竹工卡县| 辽阳市| 诏安县| 汕头市| 师宗县| 商洛市| 麻栗坡县| SHOW| 财经| 岳池县| 荥阳市| 诸暨市| 秦皇岛市| 盘山县| 昌都县| 黄山市| 梓潼县| 咸宁市| 裕民县| 婺源县| 广南县| 肃南| 肇州县| 奉新县|