欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go??iota?常量基本語(yǔ)法介紹

 更新時(shí)間:2022年06月02日 10:14:22   作者:腦子進(jìn)煎魚(yú)了  
這篇文章主要介紹了Go?為什么要設(shè)計(jì)?iota?常量,我們介紹了 Go 中 iota 的基本語(yǔ)法。同時(shí)基于歷史資料針對(duì) iota 到底是什么,為什么要這么叫,又有什么用進(jìn)行了一番研究,需要的朋友可以參考下

Go 語(yǔ)言中有一個(gè)非常有特色的東西,那就是 iota 常量。經(jīng)過(guò)某魚(yú)的不完全統(tǒng)計(jì),許多 Go 開(kāi)發(fā)者都是由 PHP、Java、C++、Python 等轉(zhuǎn)型過(guò)來(lái),對(duì)此還是挺好奇的。

Go 語(yǔ)法

在 Go 中枚舉常量是使用 iota 枚舉器創(chuàng)建的,在功能上,iota 關(guān)鍵字表示從 0 開(kāi)始的整數(shù)常量;在作用上可以簡(jiǎn)化使用自動(dòng)遞增數(shù)字的常量定義,非常方便。

以前定義一個(gè)枚舉值:

const (
    a = 0
    b = 1
    c = 2
)

Go 有了 iota 關(guān)鍵字后:

const (
    a = iota
    b
    c
)

對(duì)應(yīng)的值結(jié)果:

a=0
b=1
c=2

甚至還可以跳著來(lái):

const (
 a = iota
 _
 b
 c
)

對(duì)應(yīng)的值結(jié)果:

a=0
b=2
c=3

也可以玩出花來(lái):

const (
 bit0, mask0 = 1 << iota, 1<<iota - 1
 bit1, mask1                           
 _, _                                  
 bit3, mask3                          
)

對(duì)應(yīng)的值結(jié)果:

bit0 == 1, mask0 == 0  (iota == 0)
bit1 == 2, mask1 == 1  (iota == 1)
                       (iota == 2, unused)
bit3 == 8, mask3 == 7  (iota == 3)

設(shè)計(jì)思考

對(duì) iota 有了一定的基本了解后,開(kāi)始進(jìn)入我們的主題,和煎魚(yú)一起發(fā)散好奇心。

  • 為什么叫 iota,是什么的簡(jiǎn)稱(chēng)嗎?

  • Go 為什么需要有 iota?

為什么叫 iota

實(shí)際上 iota 就是全名,在 stackoverflow 的 提問(wèn) [1] 中已經(jīng)有許多社區(qū)朋友探討過(guò)(果然好奇的小伙伴挺多的)。

本質(zhì)上 ”iota“ 是希臘字母表的第 9 個(gè)字母。它是數(shù)學(xué)符號(hào)的典型,代表一個(gè)非常小的東西。

常用于以下的場(chǎng)景:

  • 作為和與算法中的迭代器。

  • 作為下標(biāo)索引。

  • 用于復(fù)數(shù)的虛數(shù)部分。

除了 Go 以外,在 APL、C++,又或是 Scheme 均有有 iota 常量的存在(設(shè)計(jì)),可以給到大家使用。

Scheme iota 的簽名如下:

iota count [start step]

作用是返回一個(gè)包含計(jì)數(shù)數(shù)字的列表,從起始點(diǎn)開(kāi)始,每次增加步長(zhǎng)。默認(rèn)的開(kāi)始是0,默認(rèn)的步驟是 1。

例如:

(iota 6)        ? (0 1 2 3 4 5)
(iota 4 2.5 -2) ? (2.5 0.5 -1.5 -3.5)

其實(shí) iota 已經(jīng)是迭代器的一個(gè) 約定式命名 了,可以認(rèn)為是也業(yè)內(nèi)通識(shí)。

為什么需要有

在《 The Go Programming Language Specification [2] 》中存在著對(duì) iota 的明確定義和說(shuō)明。

如下:

在一個(gè)常量聲明中, 預(yù)先聲明的標(biāo)識(shí)符 iota 代表連續(xù)的無(wú)類(lèi)型的整數(shù)常量。它的值是該常量聲明中各 ConstSpec 的索引 ,從0開(kāi)始。

提取核心意義:Go 中的 iota 是 ConstSpec 索引,也就是 填補(bǔ) 的是連續(xù)的無(wú)類(lèi)型整數(shù)常量的位置。

因此 Go 中有它的一席位置。

總結(jié)

在這篇文章中,我們介紹了 Go 中 iota 的基本語(yǔ)法。同時(shí)基于歷史資料針對(duì) iota 到底是什么,為什么要這么叫,又有什么用進(jìn)行了一番研究。

也需要思考另外一個(gè)問(wèn)題,并不是每一門(mén)語(yǔ)言都有 iota。那沒(méi)有 iota 的話(huà)會(huì)怎么樣,不存在是否也有其合理性呢?

參考資料

[1]

提問(wèn): https://stackoverflow.com/questions/31650192/whats-the-full-name-for-iota-in-golang

[2]

The Go Programming Language Specification: https://go.dev/ref/spec#Iota

到此這篇關(guān)于Go 為什么要設(shè)計(jì) iota 常量的文章就介紹到這了,更多相關(guān)Go  iota 常量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang實(shí)現(xiàn)簡(jiǎn)易的分布式系統(tǒng)方法

    golang實(shí)現(xiàn)簡(jiǎn)易的分布式系統(tǒng)方法

    這篇文章主要介紹了golang實(shí)現(xiàn)簡(jiǎn)易的分布式系統(tǒng)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Go Java算法之Excel表列名稱(chēng)示例詳解

    Go Java算法之Excel表列名稱(chēng)示例詳解

    這篇文章主要為大家介紹了Go Java算法之Excel表列名稱(chēng)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • GO語(yǔ)言Defer用法實(shí)例分析

    GO語(yǔ)言Defer用法實(shí)例分析

    這篇文章主要介紹了GO語(yǔ)言Defer用法,實(shí)例分析了Defer的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • 優(yōu)雅使用GoFrame共享變量Context示例詳解

    優(yōu)雅使用GoFrame共享變量Context示例詳解

    這篇文章主要為大家介紹了優(yōu)雅使用GoFrame共享變量Context示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Go使用Protocol?Buffers在數(shù)據(jù)序列化的優(yōu)勢(shì)示例詳解

    Go使用Protocol?Buffers在數(shù)據(jù)序列化的優(yōu)勢(shì)示例詳解

    這篇文章主要為大家介紹了Go使用Protocol?Buffers在數(shù)據(jù)序列化的優(yōu)勢(shì)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Go標(biāo)準(zhǔn)庫(kù)strconv實(shí)現(xiàn)string類(lèi)型與其他基本數(shù)據(jù)類(lèi)型之間轉(zhuǎn)換

    Go標(biāo)準(zhǔn)庫(kù)strconv實(shí)現(xiàn)string類(lèi)型與其他基本數(shù)據(jù)類(lèi)型之間轉(zhuǎn)換

    這篇文章主要為大家介紹了Go標(biāo)準(zhǔn)庫(kù)strconv實(shí)現(xiàn)string類(lèi)型與其他基本數(shù)據(jù)類(lèi)型之間轉(zhuǎn)換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 淺談JWT在GO中的使用方法及原理

    淺談JWT在GO中的使用方法及原理

    JWT是一種基于?JSON?的開(kāi)放標(biāo)準(zhǔn),用于在網(wǎng)絡(luò)應(yīng)用間傳遞聲明,JWT被設(shè)計(jì)為可安全地將用戶(hù)身份驗(yàn)證和授權(quán)數(shù)據(jù)作為?JSON?對(duì)象在各個(gè)應(yīng)用程序之間傳遞,本文將詳細(xì)給大家介紹JWT原理及在Go中的用法,需要的朋友可以參考下
    2023-05-05
  • 詳解Go中Set的實(shí)現(xiàn)方式

    詳解Go中Set的實(shí)現(xiàn)方式

    這篇文章主要介紹了詳解Go中Set的實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Go計(jì)算某段代碼運(yùn)行所耗時(shí)間簡(jiǎn)單實(shí)例

    Go計(jì)算某段代碼運(yùn)行所耗時(shí)間簡(jiǎn)單實(shí)例

    這篇文章主要給大家介紹了關(guān)于Go計(jì)算某段代碼運(yùn)行所耗時(shí)間的相關(guān)資料,主要介紹了Golang記錄計(jì)算函數(shù)執(zhí)行耗時(shí)、運(yùn)行時(shí)間的一個(gè)簡(jiǎn)單方法,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-11-11
  • 利用golang實(shí)現(xiàn)pdf中自動(dòng)換行的表格

    利用golang實(shí)現(xiàn)pdf中自動(dòng)換行的表格

    這篇文章主要給大家介紹了如何利用golang實(shí)現(xiàn)pdf中自動(dòng)換行的表格,文中通過(guò)代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02

最新評(píng)論