*早使用變量聲明時,注意編碼的問題,漢字的問題可能引發
編譯並不能經過。
*若是你在定義變量 a 以前使用它,則會獲得編譯錯誤 undefined: a
*若是你聲明瞭一個局部變量卻沒有在相同的代碼塊中使用它,一樣會獲得編譯錯誤
*此外,單純地給 a 賦值也是不夠的,這個值必須被使用
*全局變量是容許聲明但不使用。 同一類型的多個變量能夠聲明在同一行
* 若是你想要交換兩個變量的值,則能夠簡單地使用 a, b = b, a,兩個變量的類型必須是相同。
*空白標識符 _ 也被用於拋棄值,如值 5 在:_, b = 5, 7 中被拋棄。
_ 其實是一個只寫變量,你不能獲得它的值。這樣作是由於 Go 語言中你必須使用全部被聲明的變量,
但有時你並不須要使用從一個函數獲得的全部返回值。並行賦值也被用於當一個函數返回多個返回值時,
好比這裏的 val 和錯誤 err 是經過調用 Func1 函數同時獲得:val, err = Func1(var1)。
常量能夠用len(), cap(), unsafe.Sizeof()函數計算表達式的值。常量表達式中,函數必須是內置函數,
不然編譯不過
eg:
函數
package main import "unsafe" const ( a = "abc" b = len(a) c = unsafe.Sizeof(a) ) func main(){ println(a, b, c) }
注意:在不一樣的引入的包中使用的println的規範不一樣,有的不用大寫p有的須要;
特殊常量iota
能夠認爲是一個被編譯器修改的常量
iota 在 const關鍵字出現時將被重置爲 0(const 內部的第一行以前),const 中每新增一行常量聲明
將使 iota 計數一次(iota 可理解爲 const 語句塊中的行索引)。
eg:
package main import "fmt" func main() { const ( a = iota //0 b //1 c //2 d = "ha" //獨立值,iota += 1 e //"ha" iota += 1 f = 100 //iota +=1 g //100 iota +=1 h = iota //7,恢復計數 i //8 ) fmt.Println(a,b,c,d,e,f,g,h,i) }
eg:
package main
import "fmt"
const (
i = 1 << iota
j = 3 << iota
k
l
)
func main() {
fmt.Println("i=", i)
fmt.Println("j=", j)
fmt.Println("k=", k)
fmt.Println("l=", l)
}
結果爲:
i= 1 j= 6 k= 12 l= 24