第一個程序:HelloWorld
一、go項目工程結構
配置好工作目錄後,就可以編碼開發了,在這之前,我們看下go的通用項目結構,這裡的結構主要是源代碼相應地資源文件存放目錄結構。
1.1 gopath目錄
gopath目錄就是我們存儲我們所編寫源代碼的目錄。該目錄下往往要有3個子目錄:src,bin,pkg。
src ---- 裡面每一個子目錄,就是一個包。包內是Go的源碼文件
pkg ---- 編譯後生成的,包的目標文件
bin ---- 生成的可執行文件。
1.2 編寫第一個程序
1.在HOME/go的目錄下,(就是GOPATH目錄裡),創建一個目錄叫src,然後再該目錄下創建一個文件夾叫hello,在該目錄下創建一個文件叫helloworld.go,並雙擊打開,輸入以下內容:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
2.執行go程序
執行go程序由幾種方式
方式一:使用go run命令
step1:打開終端:
window下使用快捷鍵win+R,輸入cmd打開命令行提示符
linux下可以使用快捷鍵:ctrl+alt+T
mac下command+空格,輸入termainl
step2:進入helloworld.go所在的目錄
step3:輸入go run helloworld.go命令並觀察運行結果。
方式二:使用go build命令
step1:打開終端:在任意文件路徑下,運行:
go install hello
也可以進入項目(應用包)的路徑,然後運行:
go install
注意,在編譯生成go程序的時,go實際上會去兩個地方找程序包:
GOROOT下的src文件夾下,以及GOPATH下的src文件夾下。
在程序包裡,自動找main包的main函數作為程序入口,然後進行編譯。
step2:運行go程序
在/home/go/bin/下(如果之前沒有bin目錄則會自動創建),會發現出現了一個hello的可執行文件,用如下命令運行:
./hello
1.3 第一個程序的解釋說明
3.2.1 package
- 在同一個包下面的文件屬於同一個工程文件,不用import包,可以直接使用
- 在同一個包下面的所有文件的package名,都是一樣的
- 在同一個包下面的文件package名都建議設為是該目錄名,但也可以不是
3.2.2 import
import "fmt" 告訴 Go 編譯器這個程序需要使用 fmt 包的函數,fmt 包實現了格式化 IO(輸入/輸出)的函數
可以是相對路徑也可以是絕對路徑,推薦使用絕對路徑(起始於工程根目錄)
- 點操作
- 我們有時候會看到如下的方式導入包
import(
. "fmt"
)
- 這個點操作的含義就是這個包導入之後在你調用這個包的函數時,你可以省略前綴的包名,也就是前面你調
- 用的fmt.Println("hello world")可以省略的寫成Println("hello world")
- 別名操作
- 別名操作顧名思義我們可以把包命名成另一個我們用起來容易記憶的名字
import(
f "fmt"
)
- 別名操作的話調用包函數時前綴變成了我們的前綴,即f.Println("hello world")
- _操作
- 這個操作經常是讓很多人費解的一個操作符,請看下面這個import
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
- _操作其實是引入該包,而不直接使用包裡面的函數,而是調用了該包裡面的init函數
3.3.3 main
main(),是程序運行的入口。
1.4 包的說明
我們知道源代碼都是存放在GOPATH的src目錄下,那麼多個多個項目的時候,怎麼區分呢?答案是通過包,使用包來組織我們的項目目錄結構。有過java開發的都知道,使用包進行組織代碼,包以網站域名開頭就不會有重複,比如千鋒的網站是http://www.mobiletrain.org,我們就可以以mobiletrain.org的名字創建一個文件夾,我自己的go項目都放在這個文件夾裡,這樣就不會和其他人的項目衝突,包名也是唯一的。
如果有自己的域名,那也可以使用自己的域名。如果沒有個人域名,現在流行的做法是使用你個人的github名,因為每個人的是唯一的,所以也不會有重複。
如上,src目錄下跟著一個個域名命名的文件夾。再以github.com文件夾為例,它裡面又是以github用戶名命名的文件夾,用於存儲屬於這個github用戶編寫的go源代碼。
閱讀更多 碼農視界 的文章