你好,歡迎進(jìn)入江蘇優(yōu)軟數(shù)字科技有限公司官網(wǎng)!
發(fā)布時(shí)間:2023-09-06
瀏覽次數(shù):0
接上篇,本書接上篇,上一篇:兔起獵鷹落,方方面面,.18入門精化教程,從白丁到鴻儒,全平臺(tái)(4) 開發(fā)環(huán)境搭建EP00,我們搭建了。 18開發(fā)運(yùn)行環(huán)境,接下來就可以運(yùn)行第一個(gè).18程序了。 讓我們做好準(zhǔn)備,開始.18的首航吧。
第一次運(yùn)行
打開4,在任意目錄下新建test.go文件:
package main // 聲明 main 包
import "fmt" // 導(dǎo)入 fmt 包,打印字符串時(shí)需要用到
func main() { // 聲明 main 主函數(shù)入口
fmt.Println("hello Go lang 1.18") // 打印 字符串}
然后按快捷鍵組合+b運(yùn)行程序(Mac平臺(tái)使用cmd+b)
程序返回:
> Environment:
> GOPATH=C:/Go
> Directory: C:\\Users\\liuyue\\www\\tornado6
> Command: C:/Go/bin\\go.exe run -v C:\\Users\\liuyue\\www\\tornado6\\test.go
> Output:
command-line-arguments
hello go1.18
> Elapsed: 3.070s
> Result: Success
與 Ruby 這樣的解釋型語言不同, 和 Java 一樣,是一種編譯型語言。 執(zhí)行前需要編譯成可執(zhí)行文件。 gorun命令會(huì)編譯源碼并直接執(zhí)行源碼的main()函數(shù)。 ,不會(huì)在當(dāng)前目錄中留下可執(zhí)行文件。
可以看到gorun命令已經(jīng)幫我們執(zhí)行了。 如果愿意的話,可以直接在終端中執(zhí)行編譯運(yùn)行命令:
C:\\Users\\liuyue\\www\\tornado6>go run test.go
hello Go lang 1.18
功效是一樣的。 如果需要單獨(dú)編譯成可執(zhí)行文件,可以使用命令:
C:\\Users\\liuyue\\www\\tornado6>go build test.go
C:\\Users\\liuyue\\www\\tornado6>dir
test.go test.exe
代碼分析
首先,支持使用//在代碼中添加一些指令和解釋,方便自己或者其他程序員閱讀代碼,這樣可以大大提高程序的可讀性:
fmt.Println("Hello,Go lang1.18") // 右邊的所有內(nèi)容當(dāng)做說明,而不是真正要執(zhí)行的程序,起輔助說明作用
還支持使用 /**/ 多行注釋:
func main() {
/*
以下代碼都是將信息打印在屏幕上
*/
fmt.Println("Hello Go lang 1.18")
}
gorun命令在編譯代碼時(shí)會(huì)忽略注釋的內(nèi)容。 如果你寫了一些不希望計(jì)算機(jī)執(zhí)行的測試代碼,你也可以添加注釋。
使用()作為模塊管理單元。 每個(gè)源文件必須首先聲明它所屬的包,因此我們會(huì)在每個(gè)Go代碼的開頭聽到一個(gè)聲明:
package main // 聲明 main 包
對(duì)應(yīng)的目錄,它有以下特點(diǎn):
1、一個(gè)目錄中的同級(jí)文件屬于同一個(gè)文件。
2. 該名稱可以與所在目錄的名稱不同。
3、main包是程序的入口包。 一個(gè)Go語言程序必須有且只有一個(gè)主包。 如果程序沒有主包,編譯時(shí)就會(huì)出錯(cuò),很難生成可執(zhí)行文件。 這一特點(diǎn)遵循了C語言的特點(diǎn)。
聲明當(dāng)前文件后,我們還可以導(dǎo)出程序所需的工具包,例如:
import "fmt" // 導(dǎo)入 fmt 包,打印字符串時(shí)需要用到
這與您想要使用的類似。 fmt包是的外部系統(tǒng)標(biāo)準(zhǔn)庫。 用它來輸入和輸出低格式的內(nèi)容。 類似的系統(tǒng)外部包還有os、io等。
引導(dǎo)包的時(shí)候也有一些技巧,比如:
import . "fmt" // 導(dǎo)入 fmt 包,打印字符串時(shí)需要用到
這個(gè)操作的意思是,包導(dǎo)出后,調(diào)用這個(gè)包的函數(shù)時(shí),可以省略帶前綴的包名,即上面調(diào)用的fmt.("")可以省略,寫成(“你好世界”)
同樣,包可以聲明自己的別名:
import f "fmt" // 導(dǎo)入 fmt 包,打印字符串時(shí)需要用到
在別名操作的情況下,調(diào)用包函數(shù)時(shí)的前綴就成為我們的前綴,即f。 (“你好世界”)。
您還可以在導(dǎo)入包時(shí)手動(dòng)初始化對(duì)象:
import _ "github.com/ziutek/mymysql/godrv"
_操作是引入包,不是直接使用包上的函數(shù),而是調(diào)用包上的init函數(shù)。
但需要注意的是,導(dǎo)出的包不能包含代碼中未使用的包,否則Go編譯器會(huì)報(bào)編譯錯(cuò)誤,如: "os"。 換句話說,您可以導(dǎo)入您使用的任何內(nèi)容,但不要使用它。 別誤會(huì),它和你在食堂吃的東西的意思是一樣的。
與類似,一個(gè)關(guān)鍵字也可以導(dǎo)出多個(gè)包。 這種情況下,包名需要用方括號(hào)()括起來,但每個(gè)包名占一行,寫法如下:
import(
"fmt"
"os"
)
main方法是程序的入口方法,類似于程序中的if=='',即程序啟動(dòng)后第一個(gè)運(yùn)行的方法。 main方法只能在main包中聲明,不能在其他包中聲明。 而且,一個(gè)主包中必須有且只有一種主要技術(shù)。
同時(shí),main方法也是一種自定義方法。 在中,所有方法都以關(guān)鍵字func開頭,定義格式如下:
func 函數(shù)名 (參數(shù)列表) (返回值列表){
函數(shù)體
}
需要注意的是的寫法不是那么隨意的,左大括號(hào){必須和函數(shù)名在同一行,否則會(huì)報(bào)錯(cuò)。
fmt.()方法是fmt包中的外部方法,用于輸出低格式的數(shù)據(jù),如字符串、整數(shù)、小數(shù)等。這里我們使用一個(gè)函數(shù)來復(fù)制字符串。 注意sublime text 格式化代碼快捷鍵,函數(shù)復(fù)制后,會(huì)手動(dòng)改行,ln是line的縮寫。
關(guān)于工作目錄
網(wǎng)上很多教程都是按照模式來講解的,目錄結(jié)構(gòu)如下
--bin 存放編譯后生成的二進(jìn)制補(bǔ)碼可執(zhí)行文件
--pkg 存儲(chǔ)編譯后的.a文件
--src 存放項(xiàng)目的源碼,可以是你自己的代碼,也可以是你的goget下載的包
將自己的包或者別人的包全部放到$/src目錄下進(jìn)行管理的方式稱為模式。
但實(shí)際上,從.11開始,goenv多了一個(gè)環(huán)境變量:這里的111,雖然是v1.11的版本標(biāo)記,但是是一個(gè)開關(guān),通過它可以開啟或關(guān)閉gomod模式。
它有三個(gè)可選值:off、on、auto,默認(rèn)值為auto。
=offsublime text 格式化代碼快捷鍵,禁用模塊支持,并在編譯時(shí)從 和 文件夾中查找包。
=on,啟用模塊支持,編譯時(shí)會(huì)忽略文件夾,只根據(jù)go.mod下載依賴。
=auto,當(dāng)項(xiàng)目在$/src之外且項(xiàng)目根目錄下有g(shù)o.mod文件時(shí),手動(dòng)啟用模塊支持。
gomod出現(xiàn)之后,正在逐漸被淘汰,基本上已經(jīng)沒有人使用了。
這也解釋了為什么我們需要自動(dòng)打開gomod在上一篇文章中:
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
如果你是.18的初學(xué)者,你可以忘記它并完全擁抱gomod,但如果你仍在維護(hù)低版本的項(xiàng)目,你應(yīng)該將其設(shè)置為關(guān)閉。
結(jié)論
可以被認(rèn)為是下一個(gè)時(shí)代的C語言。 如果打個(gè)比方,如果古代的C語言是一把六脈沖的絕世神劍,六脈沖一起發(fā)出,傷到空中的人,表現(xiàn)就無敵了。 不過,門檻太高了。 早就不可能修煉出驚天動(dòng)地的內(nèi)力來駕馭這些劍氣功了,所以戈朗就是這個(gè)時(shí)代的生死符。 借鑒六脈劍的心法和劍法,將內(nèi)力注入指尖,也能遠(yuǎn)距離傷人,但入門門檻更低。 連沒有劍法基礎(chǔ)的小白都可以練習(xí)。
如有侵權(quán)請(qǐng)聯(lián)系刪除!
Copyright ? 2023 江蘇優(yōu)軟數(shù)字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服務(wù)提供商
13262879759
微信二維碼