學習一門語言,首先肯定是要熟悉他的語法,然后才可以進行編程開發,雖然本人使用過C++,.net等語言,不過對于GO的一些新特性還是需要多多熟悉,否則即使看得懂也寫不出程序來。今天我們就開始我們的GO Hello World!
當我們新建一個GO MODULE,就會看到一個main.go,具體代碼如下所示:
package main import "fmt" func main() { fmt.Printf("Hello, world!") }
這個就是GO的Hello World程序,熟悉.NET程序的都知道,在.NET中以命名空間來區分不同的類型,組織代碼,而在GO中,則使用package的形式來組織代碼。在引用其他包時,如果沒有特殊定義需要帶上包名稱。
其中import一看就知道,.NET中的using,也可以指定包的別名。也可以省略包名稱,需要使用"_"作為別名。因為每一個包都有一個默認的init函數,有時候引入的時候不調用里面的方法,只想執行init方法可以使用“.”來忽略。
當然每一個應用程序都有一個特定的入口即main,那個方法不返還任何值。聲明方法使用func,在GO中使用結構來定義一個實體,使用type T struct格式。GO也是面向對象的,當然也具備面向對象的一些功能,例如重寫,集成等等。在GO中另一個非常重要的就是接口,GO中的接口只能定義方法,而且只要有結構實現了接口中定義的方法就表明實現了這個接口,這個在開發過程中真的有點不適應。
在GO中大寫字母開頭的為全局對象,開一在包外部調用,小寫的只能在包內部調用。我們再看一下代碼,這樣能夠更好的理解其中的一些用法,代碼如下:
package main import ( "os" "flag" // command line option parser ) var omitNewline = flag.Bool("n", false, "don't print final newline") const ( Space = " " Newline = "\n" ) func main() { flag.Parse() // Scans the arg list and sets up flags var s string = "" for i := 0; i < flag.NArg(); i++ { if i > 0 { s += Space } s += flag.Arg(i) } if !*omitNewline { s += Newline } os.Stdout.WriteString(s) }
在GO中聲明變量和VB有點像,使用var聲明變量,最后加類型,當然也可以使用使用“:=”格式來直接一步到位。聲明常量使用const,枚舉也使用這個,不過枚舉的第一個值需要注明iota,這樣代表下一個會根據第一個進行計算得到常量值。
type ByteSize float64 const ( _ = iota // ignore first value by assigning to blank identifier KB ByteSize = 1<<(10*iota) MB GB TB PB EB ZB YB )
GO還有一個很大的優點就是函數可以返回多個值,也可以返回指定的值,這是一個相當好用的,不需要像.NET中那樣,寫很多個out。這一篇主要介紹一下GO的基礎知識,下一篇我們將慢慢的進一步解讀GO的編程方法,希望能夠早點適應這種編寫方法,熟悉他的標準庫。
文章列表