這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
我是做java開發的,從接觸java開始算,已經8年了,為什麼會想到學go語言呢?前端時間我一直在學習jvm,java的一些更底層的東西,梳理回顧時,感覺可以通過學習其他開發語言,來提升我對java的理解,站在另一個角度來看java。但是又怕是蜻蜓點水式的學,達不到效果,於是有了接下來的文章,希望能寫下去。 go的曆史這裡就不談了,算一個很有背景的語言。後面的文章內容,基本都會涉及到go語言和java的比較。 我們開始吧!我們先向以前的編程前輩致敬,來一個hello world。
package main import "fmt" func main() { // 單行注釋 /* 多行注釋 */ fmt.Println("Hello, World!")}
代碼分三部分
包聲明:go語言限制程式入口的go檔案,必須命名為main,否則報錯。
go run: cannot run non-main package
匯入包:後面的輸出語句用到了fmt包。但是go語言有個不同的地方是如果後面代碼裡沒有用到前面匯入的bao,將會報錯。
# command-line-arguments./hello_world.go:4: imported and not used: "flag"
函數:我們看到go語言的入口是一個函數,沒有類存在。func是go語言定義函數的關鍵字。函數名是main,入口函數約定了函數名必須叫main,否則報錯:
# command-line-argumentsruntime.main: call to external function main.mainruntime.main: main.main: not definedruntime.main: undefined: main.main
注釋:代碼中我們能看到有單行注釋和多行注釋的格式。 我們看到函數後面跟了一個 大括弧({ ),很多人會覺得這隻是一些編程習慣。其實go語言文法要求大括弧的前半部分必須要接在一個語句後面,不能另起一行,如下:
xxx { yyyy}
否則,報錯:
# command-line-arguments./hello_world.go:6: syntax error: unexpected semicolon or newline before {
後面go語言的其他地方,都有這方面的要求。 我們看看java語言的hello world 。
public class Test { public static void main(String args[]) { System.out.println("hello world !"); } }
其實java的限制就很少了,我們的包名都可以不設定,他只是對main方法有要求。go裡面沒有要求mian方法歸屬一個類。