天天看點

3. Go語言一些技巧

分組聲明

在Go語言中,同時聲明多個常量、變量,或者導入多個包時,可采用分組的方式進行聲明。

例如下面的代碼:

import "fmt"
import "os"

const i = 100
const pi = 3.1415
const prefix = "Go_"

var i int
var pi float32
var prefix string
           

可以分組寫成如下形式:

import(
    "fmt"
    "os"
)

const(
    i = 100
    pi = 3.1415
    prefix = "Go_"
)

var(
    i int
    pi float32
    prefix string
)
           

除非被顯式設定為其它值或 iota ,每個 const 分組的第一個常量被預設設定為它的0值,第二及後續的常量被預設設定為它前面那個常量的值,如果前面那個常量的值是 iota ,則它也被設定為 iota 。

iota枚舉

Go裡面有一個關鍵字 iota ,這個關鍵字用來聲明 enum 的時候采用,它預設開始值是0,每調用一次加1:

const(
    x = iota // x == 0
    y = iota // y == 1
    z = iota // z == 2
    w // 常量聲明省略值時,預設和之前一個值的字面相同。這裡隐式地說 w = iota ,是以 w == 3 。其實上面 y 和 z 可同樣不用 "= iota"
)
const v = iota // 每遇到一個 const 關鍵字, iota 就會重置,此時 v == 0
           

Go程式設計的一些規則

Go之是以會那麼簡潔,是因為它有一些預設的行為:

  • 大寫字母開頭的變量是可導出的,也就是其它包可以讀取的,是公用變量;小寫字母開頭的就是不可導出的,是私有變量。
  • 大寫字母開頭的函數也是一樣,相當于 class中的帶 public 關鍵詞的公有函數;小寫字母開頭的就是有private 關鍵詞的私有函數。