我們知道iota
常用於cost
表示式中,其值是從0開始的,const宣告快中每增一行,iota
值自增1
const
( a0,b0 =
1<<
iota,1
<<
iota-1
a1,b1 _,
_ a3,b3
)
注意iota
識別符號只能用於常量表示式中,那麼想要了解iota
是如何運作的,就要看看go的編譯器是如何處理常量宣告的。
在編譯器**中,每個常量宣告語句使用valuespec
結構表示(src/go/ast/ast.go:valuespec)
type
(//其他結構
// a valuespec node represents a constant or variable declaration
// (constspec or varspec production).
// valuespec struct
//其他結構
)
valuespec 結構不僅可以用來表示常量宣告,還可以表示變數宣告,但它僅僅表示一行宣告語句
const
(//常量的注釋(文件)
a,b =
iota
,iota
//常量的行注釋
)
編譯器在構造常量時遵循以下的步驟
for
iota
,spec :=
range valuespecs
}
從上面的**可以看出iota 表明了const宣告塊的行索引 go專家程式設計系列(1)常見資料結構 string
string in golang 總結hello世界字元 編號二進位制 h104 0110 1000 e101 0110 0101 l108 0110 1100 l108 0110 1100 o111 0110 0111 世19990 01001110 00010110 界30028 0111010...
go專家程式設計系列(2)常見資料結構 slice
slice的實現原理 又稱動態陣列,依託陣列實現,可以方便地進行擴容和傳遞,實際使用時比陣列更靈活。type slice struct 以上是go中slice的宣告。簡單表示式 a low hihg 如果 a 為陣列或者切片,則該表示式將切取a low high 的元素,如果 a 為string 該...
常見資料結構
陣列 array 在程式設計中,為了處理方便,把具有相同型別的若干變數按有序的形式組織起來。這些按序排列的同類資料元素的集合稱為陣列。在c語言中,陣列屬於構造資料型別。乙個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列 字元陣列...