Go 容器遍歷的實(shí)現(xiàn)示例
前文回顧
前面的文章主要介紹了 Go 語(yǔ)言中提供了 list 列表和 Map 映射關(guān)系容器,這兩種容器都是我們?nèi)粘=?jīng)常使用到的。介紹了好多種的 Go 語(yǔ)言提供的基礎(chǔ)容器,免不了要查詢?nèi)萜髦械臄?shù)據(jù),那么是如何實(shí)現(xiàn)遍歷的呢?本文將會(huì)介紹幾種常用容易的遍歷及其使用。
容器遍歷
Go 語(yǔ)言中 range 關(guān)鍵字用于 for 循環(huán)中迭代數(shù)組(array)、切片(slice)、通道(channel)或集合(map)的元素。在數(shù)組和切片中它返回元素的索引和索引對(duì)應(yīng)的值,在集合中返回 key-value 對(duì)。
遍歷對(duì)于很多 Golang 的內(nèi)置容器來(lái)說(shuō),形式都是基本一致的,主要通過(guò) for-range 語(yǔ)法,我們將通過(guò)以下的例子分別展示數(shù)組、切片和字典的遍歷過(guò)程,代碼如下所示:
package main import "fmt" func main() { // 數(shù)組的遍歷 nums := [...]int{1,2,3,4,5,6,7,8} for k, v:= range nums{ // k 為下標(biāo),v 為對(duì)應(yīng)的值 fmt.Println(k, v, " ") } fmt.Println() // 切片的遍歷 slis := []int{1,2,3,4,5,6,7,8} for k, v:= range slis{ // k 為下標(biāo),v 為對(duì)應(yīng)的值 fmt.Println(k, v, " ") } fmt.Println() // 字典的遍歷 tmpMap := map[int]string{ 0 : "小明", 1 : "小紅", 2 : "小張", } for k, v:= range tmpMap{ // k 為鍵值,v 為對(duì)應(yīng)值 fmt.Println(k, v, " ") } }
通過(guò) for-range 可以對(duì)數(shù)組、切片和字典以同樣的方式進(jìn)行遍歷。如果僅需要遍歷值,可以將不需要的鍵改為匿名變量形式,如下所示:
for _, v := range nums {
僅遍歷鍵時(shí),可以直接省略掉無(wú)用值的賦值。在 for-range 遍歷的過(guò)程中,因?yàn)殒I和值都是通過(guò)拷貝的方式進(jìn)行賦值,對(duì)它們進(jìn)行修改并不會(huì)影響到容器內(nèi)成員的變化,這點(diǎn)需要我們?cè)趯?shí)際開(kāi)發(fā)中多加注意。
小結(jié)
本文主要介紹了容器的遍歷。go 語(yǔ)言中主要通過(guò) for-range 語(yǔ)法,文中實(shí)際的案例分別展示了數(shù)組、切片和字典的遍歷過(guò)程。
在數(shù)組上使用 range 將傳入 index 和值兩個(gè)變量。當(dāng)我們不需要使用該元素的序號(hào),可以使用空白符"_"省略了。不過(guò)有些場(chǎng)景可能確實(shí)需要知道它的索引。
到此這篇關(guān)于Go 容器遍歷的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Go 容器遍歷內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語(yǔ)言實(shí)現(xiàn)逐行讀取和寫(xiě)入文件詳解
這篇文章主要介紹了如何使用go語(yǔ)言實(shí)現(xiàn)從輸入文件中讀取每行數(shù)據(jù),然后將每行字段組合成SQL插入腳本,然后逐行寫(xiě)入另外一個(gè)空白文件中,有需要的可以參考下2024-01-01go語(yǔ)言實(shí)現(xiàn)將重要數(shù)據(jù)寫(xiě)入圖片中
本文給大家分享的是go語(yǔ)言實(shí)現(xiàn)將數(shù)據(jù)的二進(jìn)制形式寫(xiě)入圖像紅色通道數(shù)據(jù)二進(jìn)制的低位,從而實(shí)現(xiàn)將重要數(shù)據(jù)隱藏,有需要的小伙伴參考下吧。2015-03-03gorm整合進(jìn)go-zero的實(shí)現(xiàn)方法
go-zero提供的代碼生成器里面,沒(méi)有提供orm框架操作,但是提供了遍歷的緩存操作,所以可以利用gorm當(dāng)作一個(gè)sql語(yǔ)句的生成器,把生成后的sql語(yǔ)句放到go-zero生成的模板中去執(zhí)行,對(duì)gorm整合進(jìn)go-zero的實(shí)現(xiàn)方法感興趣的朋友一起看看吧2022-03-03Go開(kāi)發(fā)環(huán)境搭建詳細(xì)介紹
由于目前網(wǎng)上Go的開(kāi)發(fā)環(huán)境搭建文章很多,有些比較老舊,都是基于 GOPATH的,給新入門(mén)的同學(xué)造成困擾。以下為2023 版 Go 開(kāi)發(fā)環(huán)境搭建,可參照此教程搭建Go開(kāi)發(fā)環(huán)境,有需要的朋友可以參考閱讀2023-04-04golang 實(shí)現(xiàn)時(shí)間戳和時(shí)間的轉(zhuǎn)化
這篇文章主要介紹了golang 實(shí)現(xiàn)時(shí)間戳和時(shí)間的轉(zhuǎn)化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05