第一個go程式——HelloWorld.go 源碼 : 在命令行切換到程式所在路徑下,go run HelloWorld.go。或者在HelloWorld.go程式所在路徑下,先執行 go build HelloWorld.go, 生成一個可執行文件HelloWorld。然後直接在命令行輸入Hell ...
第一個go程式——HelloWorld.go
源碼 :
package main
import "fmt" // import ("fmt") func main() { fmt.Println("Hello World!") }
- 執行:
在命令行切換到程式所在路徑下,go run HelloWorld.go。或者在HelloWorld.go程式所在路徑下,先執行 go build HelloWorld.go, 生成一個可執行文件HelloWorld。然後直接在命令行輸入HelloWorld即可執行!再或者使用JetBrain的軟體Goland,此軟體同樣可以使用教育郵箱註冊。
- import "fmt" /* 導包,fmt包實現了格式化I/O(輸入/輸出)的函數 */
如果這樣導包: import (. "fmt"), 則fmt.Println()可以略寫成Println() ,即 Print + 換行.
格式化輸出: fmt.Printf("面積為 : %d", area)
-
別名操作: 可以把包名換成一個容易記憶的名字,如: import ( f "fmt"), 然後可以 f.Print(),且只能使用 f 而不能再用 fmt.
- _ 操作——這個操作是一個讓很多人頭疼的一個操作符,請看下麵這個import
import ( "database/sql" _ "github.com/ziutek/mymysql/godrv" )
_操作其實是引入該包,而不直接使用包裡面的函數,實際調用了該包裡面的init函數。
_ 標識符也被用來拋棄值:如在: _, b = 5, 6 中, 5被拋棄了。 _ 實際上是一個只寫變數,不能得到它的值。
因為 Go 語言中必須使用所有被聲明的變數,但有時你並不需要使用從一個函數得到的所有返回值。 -
main 與 init 這兩個函數在定義時不能有任何的參數和返回值。
每個package中的init函數都是可選的,但package中必須包含一個main函數。雖然一個package裡面可以寫任意多個init函數,但推薦只用一個。
Go程式會自動調用init()和main()。先調用init函數,再調用main函數。
運行程式,必須要運行存在main函數的go文件。 -
初始化順序:
程式的初始化和執行都起始於 main 包。如果 main 包還導入了其它的包,那麼就會在編譯時將它們依次導入。有時一個包會被多個包同時導入,那麼它只會被導入一次(例如很多包可能都會用到 fmt 包,但它只會被導入一次)。當一個包被導入時,如果該包還導入了其它的包,那麼會先將其它包導入進來,然後再對這些包中的包級常量和變數進行初始化,接著執行init函數(如果有的話),依次類推。等所有被導入的包都載入完畢了,就會開始對main包中的包級常量和變數進行初始化,然後執行main包中的 init 函數(如果有的話),最後執行main函數。 - 編程規範
註釋:單行註釋用 //, 多行註釋(塊註釋)用 /* */
標識符:包括常量、變數、函數名等,如果標識符以大寫字母開頭,則其對外部包是可見的,可以被外部包的代碼使用(相當於使用 public 進行修飾); 若以小寫字母開頭,則只對內部包可見,對外部包不可見(相當於使用 private 修飾)。
語句結尾:Go語言預設一行就是一條代碼語句,不需要分號結尾。但將多條語句寫在同一行時,它們必須使用 ; 隔開。