亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
Go語言程式的編譯和執(zhí)行的方法
首頁 後端開發(fā) Golang go語言能不能編譯

go語言能不能編譯

Dec 09, 2022 pm 06:20 PM
go golang go語言 編譯

go語言能編譯。 Go語言是編譯型的靜態(tài)語言,是需要編譯才能運作的程式語言。對Go語言程式進行編譯的命令有兩種:1、「go build」命令,可以將Go語言程式碼編譯成二進位的可執(zhí)行文件,但該二進位檔案需要手動執(zhí)行;2、「go run」命令,會在編譯後直接執(zhí)行Go語言程序,編譯過程中會產(chǎn)生一個臨時文件,但不會產(chǎn)生可執(zhí)行檔。

go語言能不能編譯

本教學(xué)操作環(huán)境:windows10系統(tǒng)、GO 1.18版本、Dell G3電腦。

go語言能編譯。

Go語言是編譯型的靜態(tài)語言,是一門需要編譯才能運行的程式語言,也就說程式碼在運行之前需要透過編譯器產(chǎn)生二進位機器碼,隨後二進位檔才能在目標(biāo)機器上運作。

Go語言程式的編譯和執(zhí)行的方法


可以透過Go語言提供的go buildgo run 指令對Go語言程式進行編譯:

  • go build指令可以將Go語言程式碼編譯成二進位的可執(zhí)行文件,但是需要我們手動執(zhí)行該二進位檔案;

  • go run命令則更加方便,它會在編譯後直接執(zhí)行Go語言程序,編譯過程中會產(chǎn)生一個臨時文件,但不會產(chǎn)生可執(zhí)行文件,這個特點很適合用來調(diào)試程式。 【相關(guān)推薦:Go影片教學(xué)、程式設(shè)計教學(xué)

1、命令列工具

這裡使用Windows 自帶的命令列工具(也叫CMD 視窗或命令提示字元)來編譯Go語言程式。微軟後來對命令列工具進行了一次升級,並更名為 Powershell,power 是更強大的意思。

開啟命令列工具的方式多種多樣,下面列出了比較常用的兩種:

  • #可以在開始功能表中開啟命令列工具,然後cd到Go 原始檔所在的目錄。

  • 也可以在Go 來源檔案所在目錄的空白處按住Shift 鍵並按一下滑鼠右鍵,然後在彈出式功能表中選擇「在此處開啟命令列視窗」或「在此處開啟Powershell 視窗”,這樣會自動cd 到Go 原始檔所在的目錄,如下圖所示。這種方式更方便,推薦大家使用。

提示:cd 是命令列工具的指令,用來改變目前所在的目錄,是 change directory 的縮寫。

go語言能不能編譯
Win7 下選擇“在此處開啟命令視窗”

go語言能不能編譯
#Win10 下選擇“在此處開啟 Powershell 視窗” go build 指令

2、go build 指令

go build指令用來啟動編譯,它可以將Go語言程式與相關(guān)依賴編譯成一個可執(zhí)行文件,其語法格式如下。

go build fileName
  • 其中fileName 為所需的參數(shù),可以是一個或多個Go 原始檔名(當(dāng)有多個參數(shù)時需要使用空格將兩個相鄰的參數(shù)分開),也可以省略不寫。

使用 go build 指令進行編譯時,不同參數(shù)的執(zhí)行結(jié)果也是不同的。

1) 當(dāng)參數(shù)不為空時

如果fileName 為同一main 套件下的所有原始檔案名稱(可能有一個或多個),編譯器將產(chǎn)生一個與第一個fileName 同名的可執(zhí)行檔(如執(zhí)行go build abc.go def.go ...會產(chǎn)生一個abc.exe 檔案);如果fileName 為非main 套件下的來源檔案名,編譯器將只對該套件進行語法檢查,不產(chǎn)生可執(zhí)行檔。

2) 當(dāng)參數(shù)為空時

如果目前目錄下存在main 包,則會產(chǎn)生一個與目前目錄名同名的「目錄名.exe」可執(zhí)行檔(如在hello 目錄中執(zhí)行go build指令時,會產(chǎn)生hello.exe 檔案);如果不存在main 套件,則只對目前目錄下的程式原始碼進行語法檢查,不會產(chǎn)生可執(zhí)行檔。

使用go build指令對我們上一節(jié)所寫的程式進行編譯,執(zhí)行結(jié)果如下所示:

D:\code> go build .\demo.go
D:\code> .\demo.exe
Hello World!

其中D:\code>對應(yīng)的是目前目錄,也就是D 磁碟下的code 資料夾,它是命令列工具自動新增的,不屬於編譯指令的一部分。

第 1 行g(shù)o build命令后面的參數(shù)中,.\表示當(dāng)前目錄。在Windows 系統(tǒng)中,當(dāng)前目錄使用.\表示;在類 Unix 系統(tǒng)(例如 Linux、MacOS 等)中,當(dāng)前目錄使用./表示。

注意,這里的go build命令中.\可以省略不寫,不會影響編譯。

另外,go build命令只有在執(zhí)行出錯的情況下才會有返回信息,執(zhí)行成功的話是沒有返回信息的,但是會在當(dāng)前目錄生成一個與 main 包文件同名的 .exe 可執(zhí)行文件,如下圖所示。

go語言能不能編譯

第 2 行中的.\demo.exe表示執(zhí)行當(dāng)前目錄下的 demo.exe 程序。

第 3 行則是 demo.exe 程序的運行結(jié)果。

3、go run 命令

除了使用go build命令外,Go語言還為我們提供了go run命令,go run命令將編譯和執(zhí)行指令合二為一,會在編譯之后立即執(zhí)行Go語言程序,但是不會生成可執(zhí)行文件。

go run命令的語法格式如下:

go run fileName
  • 其中 fileName 為所需要的參數(shù),參數(shù)必須是同一 main 包下的所有源文件名,并且不能為空。

使用go run命令對我們上一節(jié)編寫的程序進行編譯,運行結(jié)果如下所示:

D:\code> go run demo.go
Hello World!

可以看到第 1 行的go run命令執(zhí)行后,直接在第 2 行輸出了程序的運行結(jié)果。

更多編程相關(guān)知識,請訪問:編程視頻??!

以上是go語言能不能編譯的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
GO應(yīng)用程序的標(biāo)準(zhǔn)項目佈局是什麼? GO應(yīng)用程序的標(biāo)準(zhǔn)項目佈局是什麼? Aug 02, 2025 pm 02:31 PM

答案是:Go應(yīng)用沒有強制項目佈局,但社區(qū)普遍採用一種標(biāo)準(zhǔn)結(jié)構(gòu)以提升可維護性和擴展性。 1.cmd/存放程序入口,每個子目錄對應(yīng)一個可執(zhí)行文件,如cmd/myapp/main.go;2.internal/存放私有代碼,不可被外部模塊導(dǎo)入,用於封裝業(yè)務(wù)邏輯和服務(wù);3.pkg/存放可公開復(fù)用的庫,供其他項目導(dǎo)入;4.api/可選,存放OpenAPI、Protobuf等API定義文件;5.config/、scripts/、web/分別存放配置文件、腳本和Web資源;6.根目錄包含go.mod和go.sum

您如何在Go中逐行讀取文件? 您如何在Go中逐行讀取文件? Aug 02, 2025 am 05:17 AM

使用bufio.Scanner是Go中逐行讀取文件最常見且高效的方法,適用於處理大文件、日誌解析或配置文件等場景。 1.使用os.Open打開文件並確保通過deferfile.Close()關(guān)閉文件。 2.通過bufio.NewScanner創(chuàng)建掃描器實例。 3.在for循環(huán)中調(diào)用scanner.Scan()逐行讀取,直到返回false表示到達文件末尾或出錯。 4.使用scanner.Text()獲取當(dāng)前行內(nèi)容(不含換行符)。 5.循環(huán)結(jié)束後檢查scanner.Err()以捕獲可能的讀取錯誤。此方法內(nèi)存效

您如何處理GO Web應(yīng)用程序中的路由? 您如何處理GO Web應(yīng)用程序中的路由? Aug 02, 2025 am 06:49 AM

Go應(yīng)用中的路由選擇取決於項目複雜度,1.使用標(biāo)準(zhǔn)庫net/httpServeMux適合簡單應(yīng)用,無需外部依賴且輕量,但不支持URL參數(shù)和高級匹配;2.第三方路由器如Chi提供中間件、路徑參數(shù)和嵌套路由,適合模塊化設(shè)計;3.Gin性能優(yōu)異,內(nèi)置JSON處理和豐富功能,適合API和微服務(wù)。應(yīng)根據(jù)是否需要靈活性、性能或功能集成來選擇,小型項目用標(biāo)準(zhǔn)庫,中大型項目推薦Chi或Gin,最終實現(xiàn)從簡單到復(fù)雜的平滑擴展。

您如何在GO中解析命令行旗幟? 您如何在GO中解析命令行旗幟? Aug 02, 2025 pm 04:24 PM

Go的flag包可輕鬆解析命令行參數(shù),1.使用flag.Type()定義字符串、整型、布爾等類型標(biāo)誌;2.可通過flag.TypeVar()將標(biāo)誌解析到變量避免指針操作;3.調(diào)用flag.Parse()後,用flag.Args()獲取後續(xù)位置參數(shù);4.實現(xiàn)flag.Value接口可支持自定義類型,滿足多數(shù)簡單CLI需求,複雜場景可用spf13/cobra庫替代。

您如何使用諸如if-else in go中的條件語句? 您如何使用諸如if-else in go中的條件語句? Aug 02, 2025 pm 03:16 PM

Go中的if-else語句無需括號但必須使用花括號,支持在if中初始化變量以限製作用域,可通過elseif鍊式判斷條件,常用於錯誤檢查,且變量聲明與條件結(jié)合可提升代碼簡潔性與安全性。

您如何在Go中宣布常數(shù)? 您如何在Go中宣布常數(shù)? Aug 02, 2025 pm 04:21 PM

在Go中,常量使用const關(guān)鍵字聲明,且值不可更改,可為無類型或有類型;1.單個常量聲明如constPi=3.14159;2.塊內(nèi)多個常量聲明如const(Pi=3.14159;Language="Go";IsCool=true);3.顯式類型常量如constSecondsInMinuteint=60;4.使用iota生成枚舉值,如const(Sunday=iota;Monday;Tuesday)將依次賦值0、1、2,且iota可用於位運算等表達式;常量必須在編譯時確定值,

如何使用Golang中的平臺特定代碼使用構(gòu)建約束 如何使用Golang中的平臺特定代碼使用構(gòu)建約束 Aug 03, 2025 am 07:48 AM

BuildconstraintsinGoarecompile-timedirectivesthatcontrolfileinclusionbasedonplatformorcustomtags;theyarespecifiedusing//go:buildfollowedbyacondition,placedbeforethepackagestatement.1.Use//go:buildlinux,//go:buildwindows,or//go:builddarwintorestrictco

解析和產(chǎn)生JSON 解析和產(chǎn)生JSON Aug 02, 2025 pm 03:18 PM

Go的encoding/json包支持高效處理JSON。 1.解析JSON時,使用json.Unmarshal將數(shù)據(jù)映射到帶json:"field"標(biāo)籤的導(dǎo)出字段結(jié)構(gòu)體中,omitempty可忽略零值字段;2.生成JSON時,使用json.Marshal或json.MarshalIndent將結(jié)構(gòu)體序列化,或通過json.NewEncoder直接寫入響應(yīng)以節(jié)省內(nèi)存;3.處理未知結(jié)構(gòu)可用map[string]interface{}或json.RawMessage延遲解析;4.注意

See all articles