成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go 為什么要設計 Iota 常量?

開發 前端
在 Go 中枚舉常量是使用 iota 枚舉器創建的,在功能上,iota 關鍵字表示從 0 開始的整數常量;在作用上可以簡化使用自動遞增數字的常量定義,非常方便。

大家好,我是煎魚。

Go 語言中有一個非常有特色的東西,那就是 iota 常量。經過某魚的不完全統計,許多 Go 開發者都是由 PHP、Java、C++、Python 等轉型過來,對此還是挺好奇的。

今天就由煎魚和大家一起深入學習。

Go 語法

在 Go 中枚舉常量是使用 iota 枚舉器創建的,在功能上,iota 關鍵字表示從 0 開始的整數常量;在作用上可以簡化使用自動遞增數字的常量定義,非常方便。

以前定義一個枚舉值:

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

Go 有了 iota 關鍵字后:

const (
a = iota
b
c
)

對應的值結果:

a=0
b=1
c=2

甚至還可以跳著來:

const (
a = iota
_
b
c
)

對應的值結果:

a=0
b=2
c=3

也可以玩出花來:

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

對應的值結果:

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

設計思考

對 iota 有了一定的基本了解后,開始進入我們的主題,和煎魚一起發散好奇心。

  • 為什么叫 iota,是什么的簡稱嗎?
  • Go 為什么需要有 iota?

為什么叫 iota

實際上 iota 就是全名,在 stackoverflow 的提問[1]中已經有許多社區朋友探討過(果然好奇的小伙伴挺多的)。

本質上 ”iota“ 是希臘字母表的第 9 個字母。它是數學符號的典型,代表一個非常小的東西。

圖片

常用于以下的場景:

  • 作為和與算法中的迭代器。
  • 作為下標索引。
  • 用于復數的虛數部分。

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

Scheme iota 的簽名如下:

iota count [start step]

作用是返回一個包含計數數字的列表,從起始點開始,每次增加步長。默認的開始是0,默認的步驟是 1。

例如:

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

其實 iota 已經是迭代器的一個約定式命名了,可以認為是也業內通識。

為什么需要有

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

如下:

圖片

在一個常量聲明中,預先聲明的標識符 iota 代表連續的無類型的整數常量。它的值是該常量聲明中各 ConstSpec 的索引,從0開始。

提取核心意義:Go 中的 iota 是 ConstSpec 索引,也就是填補的是連續的無類型整數常量的位置。

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

總結

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

也需要思考另外一個問題,并不是每一門語言都有 iota。那沒有 iota 的話會怎么樣,不存在是否也有其合理性呢?

參考資料

[1]提問: 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


責任編輯:武曉燕 來源: 腦子進煎魚了
相關推薦

2021-04-26 09:33:46

Go Iota語言

2022-01-17 16:09:43

Go語言開發

2022-01-19 22:51:57

設計匿名用戶

2009-09-07 16:45:54

.NET代碼設計

2020-06-22 07:18:21

Java語言開發

2020-02-24 09:38:05

PythonGo語言Linux

2024-12-31 11:05:07

2022-01-03 08:06:15

函數Go數據

2013-03-12 14:30:09

Ubuntu操作系統

2015-08-06 10:14:15

造輪子facebook

2022-08-15 08:27:02

基站網絡

2021-02-01 08:02:11

設計模式接口

2020-02-27 21:03:30

調度器架構效率

2020-04-07 16:12:56

Go編程語言開發

2021-02-23 10:19:46

編程技能開發

2021-11-19 09:49:00

CC++語法糖

2018-05-23 00:20:29

2019-09-30 07:50:51

ITOps云端ITOM

2019-12-26 14:52:31

微軟CortanaAndroid

2016-08-19 16:27:52

數據庫Mongo DB開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产亚洲成av人片在线观看桃 | 精品乱码一区二区三四区视频 | 啪啪毛片| 一区二区三区四区在线 | 91精品久久久久久久久中文字幕 | 日韩午夜影院 | 国产一区二区高清在线 | a免费在线 | 在线电影日韩 | 婷婷综合网 | 精品国产乱码久久久久久丨区2区 | 国产一区二区在线视频 | 日韩av免费看 | 久久综合伊人一区二区三 | 国产人成精品一区二区三 | 青青草一区 | 国产va| 午夜国产在线 | 国产成人精品免高潮在线观看 | 夜久久| 日韩高清中文字幕 | 高清成人免费视频 | 亚洲精品一区av在线播放 | a a毛片 | 久久国产精品精品国产色婷婷 | 精品国产一区二区在线 | 91免费在线看 | av夜夜操 | 欧产日产国产精品国产 | 久久亚洲国产精品 | 久久亚洲精品久久国产一区二区 | 国产一区二区三区四区五区加勒比 | 亚洲午夜精品 | 91秦先生艺校小琴 | 一级黄色毛片 | 一区二区三区精品在线视频 | 91精品久久久久久久久99蜜臂 | 日日夜夜精品视频 | 亚洲美女视频 | 性一爱一乱一交一视频 | 福利在线观看 |