国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Go】Go 語言教程--Go 語言范圍(Range)(十五)

這篇具有很好參考價值的文章主要介紹了【Go】Go 語言教程--Go 語言范圍(Range)(十五)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

往期回顧:

  • Go 語言教程–介紹(一)
  • Go 語言教程–語言結(jié)構(gòu)(二)
  • Go 語言教程–語言結(jié)構(gòu)(三)
  • Go 語言教程–數(shù)據(jù)類型(四)
  • Go 語言教程–語言變量(五)
  • Go 語言教程–GO語言常量(六)
  • Go 語言教程–GO語言運算符(七)
  • Go 語言教程–GO條件和循環(huán)語句(八)
  • Go 語言教程–GO語言函數(shù)(九)
  • Go 語言教程–GO語言變量作用域(十)
  • Go 語言教程–GO語言數(shù)組(十一)
  • Go 語言教程–GO語言指針(十二)
  • Go 語言教程–GO語言結(jié)構(gòu)體(十三)
  • Go 語言教程–GO語言切片(Slice)(十四)

range 關(guān)鍵字在 go 語言中是相當常用好用的語法糖,可以用在 for 循環(huán)中迭代 array、slice、map、channel、字符串所有涉及到遍歷輸出的東西。

怎么用?

我們在前一節(jié)循環(huán)中初次觸及到了 range,也知道他可以省略key,或者省略value來循環(huán)遍歷的特性,但是這種特性要結(jié)合實際情況考量該用哪一個。

Go 語言中 range 關(guān)鍵字用于 for 循環(huán)中迭代數(shù)組(array)、切片(slice)、通道(channel)或集合(map)的元素。在數(shù)組和切片中它返回元素的索引和索引對應的值,在集合中返回 key-value 對。

for 循環(huán)的 range 格式可以對 slice、map、數(shù)組、字符串等進行迭代循環(huán)。格式如下:

for key, value := range oldMap {
    newMap[key] = value
}

以上代碼中的 key 和 value 是可以省略。

如果只想讀取 key,格式如下:

for key := range oldMap

或者這樣:

for key, _ := range oldMap

如果只想讀取 value,格式如下:

for _, value := range oldMap

實例
遍歷簡單的數(shù)組,2**%d 的結(jié)果為 2 對應的次方數(shù):

實例

package main

import "fmt"

var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}

func main() {
   for i, v := range pow {
      fmt.Printf("2**%d = %d\n", i, v)
   }
}

以上實例運行輸出結(jié)果為:

2**0 = 1
2**1 = 2
2**2 = 4
2**3 = 8
2**4 = 16
2**5 = 32
2**6 = 64
2**7 = 128

for 循環(huán)的 range 格式可以省略 key 和 value,如下實例:

實例

package main
import "fmt"

func main() {
    map1 := make(map[int]float32)
    map1[1] = 1.0
    map1[2] = 2.0
    map1[3] = 3.0
    map1[4] = 4.0
   
    // 讀取 key 和 value
    for key, value := range map1 {
      fmt.Printf("key is: %d - value is: %f\n", key, value)
    }

    // 讀取 key
    for key := range map1 {
      fmt.Printf("key is: %d\n", key)
    }

    // 讀取 value
    for _, value := range map1 {
      fmt.Printf("value is: %f\n", value)
    }
}

以上實例運行輸出結(jié)果為:

key is: 4 - value is: 4.000000
key is: 1 - value is: 1.000000
key is: 2 - value is: 2.000000
key is: 3 - value is: 3.000000
key is: 1
key is: 2
key is: 3
key is: 4
value is: 1.000000
value is: 2.000000
value is: 3.000000
value is: 4.000000

range 遍歷其他數(shù)據(jù)結(jié)構(gòu):

實例

package main
import "fmt"
func main() {
    //這是我們使用 range 去求一個 slice 的和。使用數(shù)組跟這個很類似
    nums := []int{2, 3, 4}
    sum := 0
    for _, num := range nums {
        sum += num
    }
    fmt.Println("sum:", sum)
    //在數(shù)組上使用 range 將傳入索引和值兩個變量。上面那個例子我們不需要使用該元素的序號,所以我們使用空白符"_"省略了。有時侯我們確實需要知道它的索引。
    for i, num := range nums {
        if num == 3 {
            fmt.Println("index:", i)
        }
    }
    //range 也可以用在 map 的鍵值對上。
    kvs := map[string]string{"a": "apple", "b": "banana"}
    for k, v := range kvs {
        fmt.Printf("%s -> %s\n", k, v)
    }

    //range也可以用來枚舉 Unicode 字符串。第一個參數(shù)是字符的索引,第二個是字符(Unicode的值)本身。
    for i, c := range "go" {
        fmt.Println(i, c)
    }
}

以上實例運行輸出結(jié)果為:

sum: 9
index: 1
a -> apple
b -> banana
0 103
1 111

總結(jié)

range可以用于for 循環(huán)中迭代 array、slice、map、channel、字符串所有涉及到遍歷輸出的東西。
for-range 的實現(xiàn)實際上是C風格的for循環(huán)
使用index,value接收range返回值會發(fā)生一次數(shù)據(jù)拷貝文章來源地址http://www.zghlxwxcb.cn/news/detail-595837.html

到了這里,關(guān)于【Go】Go 語言教程--Go 語言范圍(Range)(十五)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Go語言范圍Range

    Go 語言中 range 用于 for 循環(huán)中迭代數(shù)組(array)、切片(slice)、通道(channel)或集合(map)的元素。在數(shù) 組和切片中它返回元素的索引和索引對應的值,在集合中返回 key-value 對。 for 循環(huán)的 range 格式可以對 slice、map、數(shù)組、字符串等進行迭代循環(huán)。 涉及指針時需要注意,v 是個

    2024年02月11日
    瀏覽(18)
  • 【Golang】Golang進階系列教程--為什么 Go 語言 struct 要使用 tags

    【Golang】Golang進階系列教程--為什么 Go 語言 struct 要使用 tags

    在 Go 語言中,struct 是一種常見的數(shù)據(jù)類型,它可以用來表示復雜的數(shù)據(jù)結(jié)構(gòu)。在 struct 中,我們可以定義多個字段,每個字段可以有不同的類型和名稱。 除了這些基本信息之外,Go 還提供了 struct tags,它可以用來指定 struct 中每個字段的元信息。 在本文中,我們將探討為什

    2024年02月15日
    瀏覽(40)
  • 【GoLang入門教程】Go語言工程結(jié)構(gòu)詳述

    【GoLang入門教程】Go語言工程結(jié)構(gòu)詳述

    前些天發(fā)現(xiàn)了一個巨牛的人工智能學習網(wǎng)站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉(zhuǎn)到網(wǎng)站:人工智能 前言 當創(chuàng)建一個Go語言項目時,良好的工程結(jié)構(gòu)是確保項目可維護性、可擴展性和清晰性的關(guān)鍵。 雖然Go本身沒有強制性的項目結(jié)構(gòu)要求,但是采用一致性

    2024年01月24日
    瀏覽(99)
  • 【Golang入門教程】Go語言變量的初始化

    【Golang入門教程】Go語言變量的初始化

    強烈推薦 前些天發(fā)現(xiàn)了一個巨牛的人工智能學習網(wǎng)站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉(zhuǎn)到網(wǎng)站: 人工智能 推薦一個個人工作,日常中比較常用的人工智能工具,無需魔法,忍不住分享一下給大家。點擊跳轉(zhuǎn)到網(wǎng)站: 人工智能工具 引言 在Go語言中,變量

    2024年04月17日
    瀏覽(106)
  • 【Golang】Golang進階系列教程--為什么說 Go 語言字符串是不可變的?

    【Golang】Golang進階系列教程--為什么說 Go 語言字符串是不可變的?

    最近有讀者留言說,平時在寫代碼的過程中,是會對字符串進行修改的,但網(wǎng)上都說 Go 語言字符串是不可變的,這是為什么呢? 這個問題本身并不困難,但對于新手來說確實容易產(chǎn)生困惑,今天就來回答一下。 首先來看看它的底層結(jié)構(gòu): 和切片的結(jié)構(gòu)很像,只不過少了一個

    2024年02月14日
    瀏覽(98)
  • 【GoLang入門教程】Go語言幾種標準庫介紹(六)

    【GoLang入門教程】Go語言幾種標準庫介紹(六)

    前言 上一篇,我們介紹了image、IO、math三個庫,這篇我們繼續(xù)介紹剩下的庫 幾種庫 Net庫 (網(wǎng)絡庫,支持 Socket、HTTP、郵件、RPC、SMTP 等) 在 Go 語言的標準庫中, net 包提供了對網(wǎng)絡操作的支持,包括基本的網(wǎng)絡協(xié)議、Socket 編程、HTTP 客戶端和服務器等。 net 包包含多個子包,其

    2024年02月02日
    瀏覽(97)
  • 【GoLang入門教程】Go語言幾種標準庫介紹(五)

    【GoLang入門教程】Go語言幾種標準庫介紹(五)

    前言 上一篇,我們介紹了fmt、Go、html 三個庫,這篇我們繼續(xù)介紹剩下的庫 幾種庫 image庫 (常見圖形格式的訪問及生成) 在 Go 語言的標準庫中, image 包提供了對圖像的基本操作和處理功能。 這個包定義了 Image 接口和一些基本的圖像類型,同時也包含了一些實現(xiàn)了該接口的具

    2024年02月03日
    瀏覽(98)
  • 【GoLang入門教程】Go語言幾種標準庫介紹(四)

    【GoLang入門教程】Go語言幾種標準庫介紹(四)

    前言 上一篇,我們介紹了debug、encoding、flag三個庫,這篇我們繼續(xù)介紹剩下的庫 幾種庫 fmt庫 (格式化操作) 在 Go 語言的標準庫中, fmt 包提供了格式化輸入輸出的功能。 這個包包括了一系列函數(shù),用于將數(shù)據(jù)格式化為字符串( fmt.Sprintf )、輸出到控制臺( fmt.Print 、 fmt.Pri

    2024年02月03日
    瀏覽(98)
  • 【GoLang入門教程】Go語言幾種標準庫介紹(八)

    【GoLang入門教程】Go語言幾種標準庫介紹(八)

    強烈推薦 前些天發(fā)現(xiàn)了一個巨牛的人工智能學習網(wǎng)站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉(zhuǎn)到網(wǎng)站:人工智能 前言 上一篇,我們介紹了plugin、reflect、regexp三個庫,這篇我們繼續(xù)介紹剩下的庫 幾種庫 runtime庫 ( 運行時接口) 在 Go 語言的標準庫中, runtime 包

    2024年01月19日
    瀏覽(93)
  • 【GoLang入門教程】Go語言幾種標準庫介紹(七)

    【GoLang入門教程】Go語言幾種標準庫介紹(七)

    前言 上一篇,我們介紹了Net、OS、path三個庫,這篇我們繼續(xù)介紹剩下的庫 幾種庫 plugin庫 (Go 1.7 加入的插件系統(tǒng)。支持將代碼編譯為插件,按需加載) 在 Go 語言的標準庫中, plugin 包提供了對 Go 插件的支持。 插件是一種在運行時加載并與主程序交互的機制,允許程序在不重新

    2024年01月16日
    瀏覽(99)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包