Go語言小細節 分號自動插入規則

2021-10-01 15:35:32 字數 777 閱讀 9083

為了允許一條複雜語句完全顯示在乙個**行中,分號可能被插入在乙個右小括號)或者右大括號}之前

package main

funcf(

)bool

func

main()

}

以上**列印出的結果為:true

原因就是,go 語言的分號自動插入規則導致的,當我們將分號補齊後,再看看**結構

package main;

funcf(

)bool

;func

main()

;};

以上新增分號的地方,除了 main 和 false 的地方是因為是 go 語言的識別符號所新增的,剩下的全部是因為右括號所新增的分號。

這裡如果還沒有理解為什麼列印 true,我們可以細看下 go 裡面的 switch 語法格式:

switch init******statement; compareoperand0
表示式 compareoperand0 可以不出現(被省略)。如果它被省略,則它的值將被視為 true。

所以編輯器會在 f() 後面新增乙個 true,這樣執行的結果都為 true。

如果用 go.fmt 來統一風格,程式會自動將 switch 的左括號放置在 f() 之後,這樣編輯器就不會在 f() 之後新增分號,也就不會有預設值,程式就是我們正常理解的邏輯。

Go語言細節提公升

在go 語言中,字串是唯讀的,也就意味著每次修改操作都會建立乙個新的字串。如果需要拼接多次,應使用 strings.builder,最小化記憶體拷貝次數。var str strings.builder func main if val,ok dict foo ok當存在多個defer語句的時候,go...

C語言小細節(三)

第一種 int a int p a 在初始化時另p指向int a的 p 1 第二種 int a int p 先定義乙個指標p p a 再另其指向a p 1 int arr 6 int pa arr 初始化指標pa指向陣列arr 6 的第乙個元素 int pb 初始化指標pb pb arr 令其指向a...

Go語言小程式

1 演示全域性變數的使用 2 init函式先於main函式執行 package main import fmt varname string 宣告全域性變數 func main func init 執行結果 howard good morning 1 用關鍵字var宣告變數,格式 var 變數名變數...