初學Golang語言需要注意那些坑
作為初學Golang新手,雖然Golang是非常優(yōu)秀的語言,但是它跟java這種面向對象的語言在語法和結構上還是有一些不一樣的。你有可能會遇到各種莫名其妙的問題,各種坑。那么本章節(jié)我們將學習 Go 語言的基礎語法中需要注意的點。
GO語言基礎語法
go 的基礎語法,我這里就不細說了,大家可以查看這個文章,學習Go 詳細的語法:http://www.runoob.com/go/go-basic-syntax.html
最好是對照上面的例子,一個一個敲出來,這樣效果最好。
下面是一個Go 程序的基本結構,包含(包聲明,引入包,函數等)
- package main // 定義包名,package main表示一個可獨立執(zhí)行的程序,每個 Go 應用程序都包含一個名為 main 的包。
- import "fmt" // 導入需要使用的包(的函數,或其他元素)
- func main() { // 程序的入口函數。main 函數是每一個可執(zhí)行程序所必須包含的,一般來說都是在啟動后第一個執(zhí)行的函數。
- fmt.Println("Hello, World!")
- }
GO語言注意的坑
不管學啥,剛開始都會遇到各種各樣的坑。下面就來總結下學習go語言的過程中,遇到的各種坑。
1. 寫C# 的人都會將 “{” 獨立一行,但是這在go 里面是錯誤的 “{” 必須更方法體 在同一行。我第一次寫go 的就犯了這個錯誤,還不知道錯誤在哪。
- func main() {
- fmt.Println("Hello, World!")
- }
2. if…else 語句中的 else 必須和 if 的 ’ } ’ 在同一行,否則編譯錯誤
- var a int = 30
- if a < 20 {
- fmt.Print("a<20")
- } else {
- fmt.Print("a>=20")
- }
3. 包名的定義。你必須在源文件中非注釋的第一行聲明包名,如:package main。package main表示一個可獨立執(zhí)行的程序,每個 Go 應用程序都包含一個名為 main 的包。
- package main
4. 在 Go 程序中,一行代表一個語句結束。每個語句不需要像 C 家族中的其它語言一樣以分號 ; 結尾,因為這些工作都將由 Go 編譯器自動完成。
如果你打算將多個語句寫在同一行,則必須使用 ; 人為區(qū)分,但在實際開發(fā)中我們并不鼓勵這種做法。
- fmt.Println("Hello, World!")
- fmt.Println("www.fpeach.com")
5. main()函數是每一個可執(zhí)行程序所必須包含的,一般來說都是在啟動后第一個執(zhí)行的函數。然而,每個package 中,只能有一個main() 函數,否則會報main redeclared in this block previous declaration at .. 的錯誤。
- package main
- import "fmt"
- func main() {
- /* 這是我的第一個簡單的程序 */
- fmt.Println("Hello, World!")
- }
6 當函數、結構等標識符以一個大寫字母開頭,如:GetInfo,那么使用這種形式的標識符的對象就可以被外部包的代碼所使用,這被稱為導出(像面向對象語言中的 public);標識符如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部是可見并且可用的(像面向對象語言中的 protected )。
- // 公有函數,可以被外部包的代碼所使用
- func Test() {
- .
- .
- .
- }
- // 私有函數,包的內部是可見、
- func test2() {
- .
- .
- .
- }
7. 標識符用來命名變量、類型等程序實體。一個標識符實際上就是一個或是多個字母(A~Z和a~z)數字(0~9)、下劃線_組成的序列,但是第一個字符必須是字母或下劃線而不能是數字。
以下是無效的標識符:
- 1ab(以數字開頭)
- case(Go 語言的關鍵字)
- a+b(運算符是不允許的)
8. 錯誤 no new variables on left side of := ,意思是,“左邊一個新的變量也沒有!”
- func main() {
- var b int = 20
- b := 30
- fmt.Print(b)
- }
解決辦法就是:對于x,y:=....這種形式,只要把其中的一個變量命名成新的就可以了。
9. 不能使用++自增或- -自減運算符初始化變量和對變量賦值
- package main
- import "fmt"
- func main(){
- var a int = 10
- var b int = a++
- var c int = 20
- c = a++
- fmt.Print(a, b, c)
- }
最后
總結一下,前面總結了我們在學習golang時可能會遇到的坑。后面我會詳細的介紹golang的語法。