掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Go語(yǔ)言是編譯型的靜態(tài)語(yǔ)言(和C語(yǔ)言一樣),所以在運(yùn)行Go語(yǔ)言程序之前,先要將其編譯成二進(jìn)制的可執(zhí)行文件。

創(chuàng)新互聯(lián)"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營(yíng)銷(xiāo),產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動(dòng)網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營(yíng)銷(xiāo)需求!創(chuàng)新互聯(lián)具備承接各種類(lèi)型的成都網(wǎng)站建設(shè)、成都網(wǎng)站制作項(xiàng)目的能力。經(jīng)過(guò)十余年的努力的開(kāi)拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評(píng)。
可以通過(guò)Go語(yǔ)言提供的go build或者go run命令對(duì)Go語(yǔ)言程序進(jìn)行編譯:
go build 命令可以將Go語(yǔ)言程序代碼編譯成二進(jìn)制的可執(zhí)行文件,但是需要我們手動(dòng)運(yùn)行該二進(jìn)制文件;go run 命令則更加方便,它會(huì)在編譯后直接運(yùn)行Go語(yǔ)言程序,編譯過(guò)程中會(huì)產(chǎn)生一個(gè)臨時(shí)文件,但不會(huì)生成可執(zhí)行文件,這個(gè)特點(diǎn)很適合用來(lái)調(diào)試程序。下面就來(lái)演示一下,如何運(yùn)行我們上一節(jié)中編寫(xiě)的Go語(yǔ)言程序。
因?yàn)橹拔覀円呀?jīng)配置好了環(huán)境變量,所以可以直接使用 Windows 自帶的命令行工具(也叫 CMD 窗口或者命令提示符)來(lái)編譯Go語(yǔ)言程序。微軟后來(lái)對(duì)命令行工具進(jìn)行了一次升級(jí),并更名為 Powershell,power 是更加強(qiáng)大的意思。
打開(kāi)命令行工具的方式多種多樣,下面列出了比較常用的兩種:
提示:cd 是命令行工具的一個(gè)命令,用來(lái)改變當(dāng)前所在的目錄,是 change directory 的縮寫(xiě)。
Win7 下選擇“在此處打開(kāi)命令窗口”
Win10 下選擇“在此處打開(kāi) Powershell 窗口”
go build 命令用來(lái)啟動(dòng)編譯,它可以將Go語(yǔ)言程序與相關(guān)依賴(lài)編譯成一個(gè)可執(zhí)行文件,其語(yǔ)法格式如下。
go build fileName
其中 fileName 為所需要的參數(shù),可以是一個(gè)或者多個(gè) Go 源文件名(當(dāng)有多個(gè)參數(shù)時(shí)需要使用
空格將兩個(gè)相鄰的參數(shù)隔開(kāi)),也可以省略不寫(xiě)。
使用 go build 命令進(jìn)行編譯時(shí),不同參數(shù)的執(zhí)行結(jié)果也是不同的。
如果 fileName 為同一 main 包下的所有源文件名(可能有一個(gè)或者多個(gè)),編譯器將生成一個(gè)與第一個(gè) fileName 同名的可執(zhí)行文件(如執(zhí)行 go build abc.go def.go ... 會(huì)生成一個(gè) abc.exe 文件);如果 fileName 為非 main 包下的源文件名,編譯器將只對(duì)該包進(jìn)行語(yǔ)法檢查,不生成可執(zhí)行文件。
如果當(dāng)前目錄下存在 main 包,則會(huì)生成一個(gè)與當(dāng)前目錄名同名的“目錄名.exe”可執(zhí)行文件(如在 hello 目錄中執(zhí)行 go build 命令時(shí),會(huì)生成 hello.exe 文件);如果不存在 main 包,則只對(duì)當(dāng)前目錄下的程序源碼進(jìn)行語(yǔ)法檢查,不會(huì)生成可執(zhí)行文件。
使用go build 命令對(duì)我們上一節(jié)編寫(xiě)的程序進(jìn)行編譯,運(yùn)行結(jié)果如下所示:
D:\code> go build .\demo.go
D:\code> .\demo.exe
Hello World!
其中D:\code>對(duì)應(yīng)的是當(dāng)前目錄,也就是 D 盤(pán)下的 code 文件夾,它是命令行工具自動(dòng)添加的,不屬于編譯命令的一部分。
第 1 行go build命令后面的參數(shù)中,.\表示當(dāng)前目錄。在Windows 系統(tǒng)中,當(dāng)前目錄使用.\表示;在類(lèi) Unix 系統(tǒng)(例如 Linux、MacOS 等)中,當(dāng)前目錄使用./表示。
注意,這里的go build 命令中 .\可以省略不寫(xiě),不會(huì)影響編譯。
另外,go build 命令只有在執(zhí)行出錯(cuò)的情況下才會(huì)有返回信息,執(zhí)行成功的話是沒(méi)有返回信息的,但是會(huì)在當(dāng)前目錄生成一個(gè)與 main 包文件同名的 .exe 可執(zhí)行文件,如下圖所示。
第 2 行中的.\demo.exe表示執(zhí)行當(dāng)前目錄下的 demo.exe 程序。
第 3 行則是 demo.exe 程序的運(yùn)行結(jié)果。
除了使用go build命令外,Go語(yǔ)言還為我們提供了go run命令,go run命令將編譯和執(zhí)行指令合二為一,會(huì)在編譯之后立即執(zhí)行Go語(yǔ)言程序,但是不會(huì)生成可執(zhí)行文件。
go run 命令的語(yǔ)法格式如下:
go run fileName
其中 fileName 為所需要的參數(shù),參數(shù)必須是同一 main 包下的所有源文件名,并且不能為空。
使用 go run 命令對(duì)我們上一節(jié)編寫(xiě)的程序進(jìn)行編譯,運(yùn)行結(jié)果如下所示:
D:\code> go run demo.go
Hello World!
可以看到第 1 行的go run 命令執(zhí)行后,直接在第 2 行輸出了程序的運(yùn)行結(jié)果。
除了本節(jié)中所講的,go build 命令和 go run 命令還有很多其他的編譯方法,我們將在后面為大家詳細(xì)介紹。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流