溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Go語(yǔ)言需要注意的坑有哪些

發(fā)布時(shí)間:2021-12-15 09:47:07 來(lái)源:億速云 閱讀:151 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“Go語(yǔ)言需要注意的坑有哪些”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Go語(yǔ)言需要注意的坑有哪些”這篇文章吧。

GO語(yǔ)言基礎(chǔ)語(yǔ)法

下面是一個(gè)Go 程序的基本結(jié)構(gòu),包含(包聲明,引入包,函數(shù)等)

package main   // 定義包名,package main表示一個(gè)可獨(dú)立執(zhí)行的程序,每個(gè) Go 應(yīng)用程序都包含一個(gè)名為 main 的包。

import "fmt"   // 導(dǎo)入需要使用的包(的函數(shù),或其他元素)func main() {  // 程序的入口函數(shù)。main 函數(shù)是每一個(gè)可執(zhí)行程序所必須包含的,一般來(lái)說(shuō)都是在啟動(dòng)后第一個(gè)執(zhí)行的函數(shù)。
   fmt.Println("Hello, World!")
}

GO語(yǔ)言注意的坑

不管學(xué)啥,剛開(kāi)始都會(huì)遇到各種各樣的坑。下面就來(lái)總結(jié)下學(xué)習(xí)go語(yǔ)言的過(guò)程中,遇到的各種坑。

1. 寫(xiě)C# 的人都會(huì)將 “{” 獨(dú)立一行,但是這在go 里面是錯(cuò)誤的 “{” 必須更方法體 在同一行。我第一次寫(xiě)go 的就犯了這個(gè)錯(cuò)誤,還不知道錯(cuò)誤在哪。

func main() {
   fmt.Println("Hello, World!")
}

2. if…else 語(yǔ)句中的 else 必須和 if 的 ’ } ’ 在同一行,否則編譯錯(cuò)誤

var a int = 30 if a < 20 {
    fmt.Print("a<20")
 } else {
    fmt.Print("a>=20")
 }

2. 包名的定義。你必須在源文件中非注釋的第一行聲明包名,如:package main。package main表示一個(gè)可獨(dú)立執(zhí)行的程序,每個(gè) Go 應(yīng)用程序都包含一個(gè)名為 main 的包。

package main

3. 在 Go 程序中,一行代表一個(gè)語(yǔ)句結(jié)束。每個(gè)語(yǔ)句不需要像 C 家族中的其它語(yǔ)言一樣以分號(hào) ; 結(jié)尾,因?yàn)檫@些工作都將由 Go 編譯器自動(dòng)完成。

如果你打算將多個(gè)語(yǔ)句寫(xiě)在同一行,則必須使用 ; 人為區(qū)分,但在實(shí)際開(kāi)發(fā)中我們并不鼓勵(lì)這種做法。

fmt.Println("Hello, World!")
fmt.Println("www.fpeach.com")

3. main()函數(shù)是每一個(gè)可執(zhí)行程序所必須包含的,一般來(lái)說(shuō)都是在啟動(dòng)后第一個(gè)執(zhí)行的函數(shù)。然而,每個(gè)package 中,只能有一個(gè)main() 函數(shù),否則會(huì)報(bào)main redeclared in this block previous declaration at .. 的錯(cuò)誤。

package main

import "fmt"

func main() {   /* 這是我的第一個(gè)簡(jiǎn)單的程序 */   fmt.Println("Hello, World!") }

4. 當(dāng)函數(shù)、結(jié)構(gòu)等標(biāo)識(shí)符以一個(gè)大寫(xiě)字母開(kāi)頭,如:GetInfo,那么使用這種形式的標(biāo)識(shí)符的對(duì)象就可以被外部包的代碼所使用,這被稱為導(dǎo)出(像面向?qū)ο笳Z(yǔ)言中的 public);標(biāo)識(shí)符如果以小寫(xiě)字母開(kāi)頭,則對(duì)包外是不可見(jiàn)的,但是他們?cè)谡麄€(gè)包的內(nèi)部是可見(jiàn)并且可用的(像面向?qū)ο笳Z(yǔ)言中的 protected )。

// 公有函數(shù),可以被外部包的代碼所使用
func Test() {   .
  .
  . }

// 私有函數(shù),包的內(nèi)部是可見(jiàn)、
func test2() {
   .
  .
  .
}

5. 標(biāo)識(shí)符用來(lái)命名變量、類型等程序?qū)嶓w。一個(gè)標(biāo)識(shí)符實(shí)際上就是一個(gè)或是多個(gè)字母(A~Z和a~z)數(shù)字(0~9)、下劃線_組成的序列,但是第一個(gè)字符必須是字母或下劃線而不能是數(shù)字。

以下是無(wú)效的標(biāo)識(shí)符:

  • 1ab(以數(shù)字開(kāi)頭)

  • case(Go 語(yǔ)言的關(guān)鍵字)

  • a+b(運(yùn)算符是不允許的)

6. 錯(cuò)誤 no new variables on left side of := ,意思是,“左邊一個(gè)新的變量也沒(méi)有!”

func main() {
    var b int = 20
    b := 30
    fmt.Print(b)
}

解決辦法就是:對(duì)于x,y:=....這種形式,只要把其中的一個(gè)變量命名成新的就可以了。

7. 不能使用++自增或- -自減運(yùn)算符初始化變量和對(duì)變量賦值

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)
}

以上是“Go語(yǔ)言需要注意的坑有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI