首先根據(jù)GO項(xiàng)目目錄結(jié)構(gòu)介紹,在
$GOPATH/src
目錄下已經(jīng)創(chuàng)建好了github.com/just5325/day01
目錄了融蹂,day01
是項(xiàng)目目錄名旺订,我們就在day01
目錄下開始創(chuàng)建我們的第一個(gè)Go語言程序弄企。
創(chuàng)建我們的第一個(gè)Go語言程序
我們在當(dāng)前項(xiàng)目(
day01
)目錄下創(chuàng)建了文件main.go
作為入口程序
go語言的所有文件都需要指定其所在的包(package),包有兩種類型,一種是 main 包区拳,使用package main
在代碼的最前面聲明砾肺。 另一種就是非main包叉信,使用package
+包名
聲明赏迟。main包可以有唯一的一個(gè)main函數(shù)耘戚,這個(gè)函數(shù)也是程序的入口,只有main包可以編譯成可執(zhí)行文件本涕。
雖然main包的文件名也叫main.go,但實(shí)際上包名和文件名沒有直接關(guān)系伙窃。
更多關(guān)于package
的相關(guān)知識(shí)菩颖,可以閱讀一下Golang Package 與 Module 簡介
// package 是一個(gè)關(guān)鍵字,用來聲明包名的为障。
// 如果聲明的是main包晦闰,說明我們這個(gè)包可以生成一個(gè)可執(zhí)行文件。
// 如果聲明的不是main包鳍怨,就不能單獨(dú)的生成一個(gè)可執(zhí)行文件呻右,比如我們寫package mysql,
// mysql這個(gè)包提供了很多函數(shù)鞋喇,是專門用來連接并操作mysql的声滥,別人是用我們mysql包提供的函數(shù),屬性等等侦香,而不是單獨(dú)的把mysql打包成一個(gè)可自行文件去訪問
// 還有就是當(dāng)前目錄下的所有g(shù)o文件落塑,包名聲明必須一樣,比如我們這里聲明的是main罐韩,當(dāng)前目錄下創(chuàng)建的其他go文件也必須聲明為main憾赁。
// 并且main包作為程序的入口,一定要有一個(gè)唯一的main函數(shù)作為入口函數(shù)散吵,我們可能還會(huì)有其他的很多函數(shù)龙考,但是main函數(shù)是必須要有一個(gè)的。
package main
// 導(dǎo)入語句
// 導(dǎo)入內(nèi)置的包矾睦,導(dǎo)入第三方的包晦款,都是使用import語句來導(dǎo)入的,導(dǎo)入的包要用雙引號(hào)來包裹
import (
"fmt"
)
// 注意:go語言中顷锰,在函數(shù)外只能定義標(biāo)識(shí)符(變量柬赐、常量、函數(shù)官紫、類型)的聲明肛宋。
// 沒有辦法在函數(shù)外寫邏輯語句州藕。
// 函數(shù)外的每個(gè)語句都必須以關(guān)鍵字開始(var、const酝陈、func等等),
// 更多Go語言關(guān)鍵字請查看官方文檔:http://docscn.studygolang.com/ref/spec#Keywords
// 程序的入口函數(shù)
// main函數(shù)沒有參數(shù)床玻,也沒有返回值
func main() {
fmt.Println("你好,世界沉帮!")
}
然后執(zhí)行
go run main.go
锈死,可以看到已經(jīng)成功運(yùn)行并打印輸出了
D:\go\src\day01>go run main.go
你好,世界穆壕!
編譯
go語言使用
go build
命令進(jìn)行編譯打包待牵,當(dāng)然還可以跨平臺(tái)交叉編譯,也還有很多其他的參數(shù)喇勋,可以查看GO命令官方文檔缨该,我們這里簡單的編譯打包體驗(yàn)一下。
執(zhí)行
go build
命令后川背,當(dāng)前目錄會(huì)出現(xiàn)一個(gè)day01.exe
的可執(zhí)行文件贰拿,如果是編譯的linux
的包,就會(huì)出現(xiàn)一個(gè)day01
的可執(zhí)行文件熄云,編譯后我們直接運(yùn)行一下看看膨更。
D:\go\src\day01>go build
D:\go\src\day01>day01.exe
你好,世界缴允!