入門(mén)當(dāng)然還是helloworld,順便了解基本結(jié)構(gòu)
我們的go程序擴(kuò)展名都是.go文件宿崭,我們先推薦下程序目錄消请。也不是嚴(yán)格限制
目錄結(jié)構(gòu)推薦gocode/src/汹桦,然后src下又有project1,projectxx,序號(hào)區(qū)分朽合,projectx下面又有main,package目錄層級(jí)叽奥,main放代碼扔水,package放額外的包,如下
我們看到如上的代碼朝氓,main文件夾下創(chuàng)建main.go文件魔市,里面編寫(xiě)內(nèi)容
首行package main是聲明文件main.go的所屬包,所有的go文件都必須開(kāi)頭聲明其所屬赵哲,這個(gè)之前講過(guò)
import "fmt"是導(dǎo)入fmt包待德,其包含標(biāo)準(zhǔn)輸入輸出格式化的方法,注意是雙引號(hào)
func main是定義了個(gè)main方法枫夺,無(wú)參将宪,里面調(diào)用fmt的Print方法,注意是首字母大寫(xiě)橡庞,內(nèi)容也是雙引號(hào)较坛,和java類似。但是go文件語(yǔ)句不加;結(jié)尾扒最,都是靠縮進(jìn)調(diào)整丑勤,這點(diǎn)又跟python類似(取長(zhǎng)補(bǔ)短)
我們寫(xiě)完了可以用go build main.go進(jìn)行編譯,會(huì)在當(dāng)前目錄上生成main.exe文件(windows),linux會(huì)生成無(wú)后綴可執(zhí)行文件(main)
我們選中window界面目錄吧趣,然后直接輸入cmd就可以實(shí)現(xiàn)當(dāng)前目錄進(jìn)入shell法竞,我以前還是shift右鍵進(jìn)的powershell藍(lán)色界面,還是使用自帶的shell比較好强挫。
如上爪喘,我們編譯后,就會(huì)生成exe文件纠拔,生成exe文件當(dāng)然就比較簡(jiǎn)單了,我們可使用輸入文件名執(zhí)行
如上泛豪,我們可以看到其執(zhí)行結(jié)果稠诲,就是我們想要的輸出HelloWorld!
當(dāng)然,我們還可以使用go run main.go诡曙,這種運(yùn)行是編譯加執(zhí)行一起做了臀叙,生產(chǎn)環(huán)境下,我們不推薦這種使用价卤。我們使用go build生成的exe可以拿到?jīng)]有g(shù)o開(kāi)發(fā)環(huán)境的機(jī)器去執(zhí)行劝萤,而go run xx.go需要有g(shù)o環(huán)境
我們還可以看到上圖,go文件本身不大慎璧,但是生成的exe文件就有一定大小床嫌,這是因?yàn)槲覀兙幾g后可執(zhí)行文件會(huì)把相關(guān)的依賴編譯進(jìn)去
當(dāng)然跨释,我們還可以go build -o 可執(zhí)行文件名 xx.go來(lái)給我們的go程序生成我們要的exe文件,執(zhí)行效果一樣
對(duì)于編譯厌处,如果我們代碼又錯(cuò)誤鳖谈,就會(huì)顯示錯(cuò)誤行號(hào)和問(wèn)題,我們修改代碼編譯運(yùn)行前記得使用vscode保存阔涉,否則沒(méi)有刷新進(jìn)去缆娃,效果如下
如上,我們就修改了函數(shù)名瑰排,當(dāng)然就沒(méi)有定義過(guò)贯要,就會(huì)報(bào)undefined錯(cuò)誤
這里再簡(jiǎn)單說(shuō)下vscode的設(shè)置,是preference首選項(xiàng)椭住,settings里編輯崇渗,如字體,我們可以調(diào)整函荣,默認(rèn)的是14
開(kāi)發(fā)注意事項(xiàng)
1 go的代碼文件必須以go結(jié)尾
如上显押,我們復(fù)制main.go文件,然后將其重命名成main.xx傻挂,我們go build會(huì)報(bào)錯(cuò)
2 go程序必須以main作為入口
這個(gè)沒(méi)什么說(shuō)的乘碑,和java,c等是一樣的
3 go語(yǔ)言嚴(yán)格區(qū)分大小寫(xiě)
也沒(méi)什么說(shuō)的,該大寫(xiě)就大寫(xiě)金拒,該小寫(xiě)就小寫(xiě)兽肤,不能混用
4 go每條語(yǔ)句不用加分號(hào)
之前講過(guò),和python一樣绪抛,編譯器自動(dòng)加(加了也沒(méi)問(wèn)題资铡,但是不嫌麻煩嗎)
5 go一行只寫(xiě)一個(gè)語(yǔ)句
不要把多行寫(xiě)到一起
6 go里沒(méi)有用到的包或者變量,編譯不能通過(guò)
可能在java里幢码,我們使用go開(kāi)發(fā),即使沒(méi)有用到也不會(huì)編譯報(bào)錯(cuò)笤休,但是go不行
如上是我們導(dǎo)包沒(méi)有使用報(bào)的方法
如上,這個(gè)是定義變量卻沒(méi)有使用