GO基礎 神奇的iota特殊常量

2022-04-30 02:09:12 字數 1630 閱讀 5735

最近在學習go語言,然後發現有乙個特殊常量是以前沒有接觸過的,比較感興趣,這裡給大家介紹一下。

iota,特殊常量,可以被認為是乙個可以被編譯器修改的常量。

核心概念:iota在const關鍵字出現時將被重置為0(const內部的第一行之前),const中每新增一行常量宣告將使iota計數一次。

這麼來看,簡單的來說,iota可以被認為是單個const宣告塊內的行索引

我們先來看乙個例子,你就能簡單的理解iota的基本作用:

//heihei

package main

import

(

"fmt")

func main()

如上的**,執行結果如下:

可見,與注釋處的說明是一致的。

下面再介紹乙個簡寫的形式,先來看**:

//heihei

package main

import

(

"fmt")

func main()

在這個例子中,const宣告塊裡採取了簡寫的形式,即:若當前行沒有賦值語句被書寫,則賦值自動採用向上、最近的乙個有賦值語句的右側值。由於b、c均沒有賦值,所以,會自動採用最近的乙個賦值的值,也就是iota。

那麼,想必在這樣的操作下,大家應該明白會輸出什麼了。對了,就是0,1,2.

那麼,如果賦值的不是單變數/常量,而是乙個表示式,結果會發生變化嗎?我們來看**:

//heihei

package main

import

(

"fmt")

func main()

先來看結果:

可以看到,這樣,依然滿足前述「省略賦值」情況下的規則,依然是複製了向上、最近的右側表示式。

好,在了解了上述的一些規則和基礎之後,我們來看乙個稍微複雜一點的例子,直接上**:

//heihei

package main

import

(

"fmt")

func main()

(請自敲**復刻的注意,由之前規則,可以預見d和e必定為字串,所以格式輸出時換成了%s。當然,也歡迎你繼續保持%d,看看結果如何~)

我們先來看結果:

可以看到,在依然遵循了「未當場賦值的宣告遵循向上、最近的賦值表示式」這一規則下,即使中間的賦值不再和iota有關,iota依然保持了計數。並在中間的結果中得以體現。

換言之——即使你的表示式中從未出現iota,「幽靈般」的iota依然會默默進行計數,其計數規則與最開始所闡述保持一致。

現在,你應該能更加深刻的理解「簡單的來說,iota可以被認為是單個const宣告塊內的行索引。」這一句話了。

go語言(三)常量和iota

和php定義一樣,一次賦值後不可重複賦值,可以批量宣告,package main import fmt const pi 3.1415926 const statusok 200 notfound 404 批量常量賦值,如果某一行宣告後沒有賦值,預設和上一行一致 const n1 200 n2 10...

GO 學習之常量與iota

相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。常量的宣告和變數宣告非常類似,只是把var換成了const,常量在定義的時候必須賦值。舉例 package main import fmt 單個宣告常量 const pi 3.1415926 批量宣告常量 const statu...

go語言基礎之 iota的用法

iota 是go語言中的乙個特殊常量,它的應用遵循以下五條規則,接下來將通過 一一驗證 不同const 定義塊互不干擾 所有注釋行和空行全部忽略 沒有表示式的常量定義復用上一行的表示式 從第一行開始,iota 從 0 逐行加一 替換所有 iota 1.不同 const 定義塊互不干擾 const a...