這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
Hello,world
Go語言不需要在語句或者聲明的末尾加上分號,除非上一上有多條語句。實際上,編譯器會主動把特定符號後的分行符號轉換為分號,因此分行符號添加的位置會影響Go代碼的正確解析。
下面這個例子,行尾的,
使得編譯器不會添加分號,則這個fmt.Printf是一個完整的行,這樣寫也比較美觀。你不能把,
放在下一行。
fmt.Prinf("hello, %s。Welcome to %s", name, country)
如果你想要一個Linux VIM編輯器下整合一個IDE,你需要安裝一個vim-go的外掛程式。如果安裝ok,則會像我的環境一樣,如下:
聲明一個變數有幾種方式:
temp:=""var temp string = ""var temp = ""var temp string
重點強調第一方式,它最簡潔,但只能用於函數或者方法內部,不用應用在包層級的變數聲明
package mainimport ( "fmt")temp:=""func main(){ fmt.Println(temp)}
編譯無法通過,報錯資訊 expected declaration, found 'IDENT'
注意事項
運用go語言編程時,開發人員應該盡量使用官方標準庫,避免重複造輪子, 提高開發效率,同時又啟動並執行程式在時間和空間複雜度上有比較好。
下面有一個關於拼接字串的DEMO:
package mainimport ( "fmt")func main(){ s, sep:= "", "" // 第一種方式: for _, arg:= os.Args[1:]{ s+=sep+arg sep = " " } fmt.Println(s) // 使用官方標準庫的方式 fmt.Println(strings.Join(os.Args[1:], " "))}
貼出官方strings.Join標準庫方法的部分代碼實現:
func Join(a []string, sep string) string{ // 省略部分程式碼片段 n:= len(sep)*(len(a)-1) // sep所佔用空間的整個長度 for i:=0;i<len(a);i++{ n+=len(a[i]) } b:= make([]byte, n) bp:=copy(b, a[0]) for _, s := range a[1:]{ bp+=copy(b[bp:], sep) bp+=copy(b[bp:], s) } return string(b)}
總結:使用標準庫,節約了記憶體空間和時間。它是一次性分配記憶體空間,不需要反覆分配和釋放記憶體,記憶體配置可能會發生記憶體頁大小不夠,導致缺頁的情況,非常耗時