最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解如何在Go語言中循環(huán)數(shù)據(jù)結(jié)構(gòu)

 更新時(shí)間:2022年10月24日 10:11:04   作者:AirStar  
這篇文章主要為大家詳細(xì)介紹了如何在Go語言中循環(huán)數(shù)據(jù)結(jié)構(gòu)(循環(huán)字符串、循環(huán)map結(jié)構(gòu)和循環(huán)Struct),文中的示例代碼代碼講解詳細(xì),需要的可以參考一下

數(shù)組是存儲類似類型數(shù)據(jù)的強(qiáng)大數(shù)據(jù)結(jié)構(gòu)。您可以通過索引識別和訪問其中的元素。

在Golang中,您可以通過在0初始化變量i并增加變量直到它達(dá)到數(shù)組的長度,使用for循環(huán)循環(huán)數(shù)組。

它們的語法如下所示:

for i := 0; i < len(arr); i++ {
    // perform an operation
}

例如,讓我們循環(huán)一個(gè)整數(shù)數(shù)組:

package main

import (
	"fmt"
)

func main() {
	numbers := []int{7, 9, 1, 2, 4, 5}

	for i := 0; i < len(numbers); i++ {
		fmt.Println(numbers[i])

	}
}

在上面的代碼中,我們定義了一個(gè)名為numbers的整數(shù)數(shù)組,并通過初始化變量i循環(huán)它們。然后,我們在增加i的同時(shí)打印出數(shù)組每個(gè)索引的值。

上面的代碼輸出如下:

7
9
1
2
4
5

我們還可以使用range關(guān)鍵字循環(huán)數(shù)組,該關(guān)鍵字迭代數(shù)組的整個(gè)長度。

語法如下所示:

for index, arr := range arr {
  // perform an operation	
}

例如:

package main

import (
	"fmt"
)

func main() {
	arr := []string{"a", "b", "c", "d", "e", "f"}

	for index, a := range arr {
		fmt.Println(index, a)
	}

}

在上面的代碼中,我們定義了一個(gè)字符串?dāng)?shù)組,并使用for..range關(guān)鍵字循環(huán)其索引和值。

for...range的語法更簡單,更容易理解。您使用它來迭代不同的數(shù)據(jù)結(jié)構(gòu),如數(shù)組、字符串、映射、切片等。

這輸出以下內(nèi)容:

0 a
1 b
2 c
3 d
4 e
5 f

假設(shè)我們忽略索引并簡單地打印出數(shù)組的元素,您只需將index變量替換為下劃線即可。

例如:

package main

import (
	"fmt"
)

func main() {
	arr := []string{"a", "b", "c", "d", "e", "f"}

	for _, a := range arr {
		fmt.Println(a)
	}

}

在上面的代碼中,我們修改了前面的示例,并將index變量替換為下劃線。我們這樣做是為了忽略索引,而是輸出數(shù)組的元素。

這輸出以下內(nèi)容:

a
b
c
d
e
f

如何在Go中循環(huán)字符串

編程中的字符串是不可變的——這意味著您在創(chuàng)建它們后無法修改它們。它們是一個(gè)或多個(gè)字符(如字母、數(shù)字或符號)的有序序列,可以是常數(shù)或變量。

在Golang中,字符串與Python或JavaScript等其他語言不同。它們表示為UTF-8字節(jié)序列,字符串中的每個(gè)元素都表示一個(gè)字節(jié)。

您使用for...range循環(huán)或使用常規(guī)循環(huán)循環(huán)字符串。

例如:

package main

import (
	"fmt"
)

func main() {
	word := "Ab$du"

	for index, a := range word {
		fmt.Println(index, string(a))
	}
}

在上面的代碼中,我們定義了一個(gè)包含不同字符的字符串,并循環(huán)了其條目。字符串在Golang中表示為字節(jié),這就是為什么在打印出來時(shí),我們需要將每個(gè)值轉(zhuǎn)換為類型string

此輸出:

0 A
1 b
2 $
3 d
4 u

如果我們沒有將每個(gè)條目轉(zhuǎn)換為字符串,Golang會打印出字節(jié)表示形式。

例如:

package main

import (
	"fmt"
)

func main() {
	word := "Ab$du"

	for index, a := range word {
		fmt.Println(index, a)
	}
}

結(jié)果:

0 65
1 98
2 36
3 100
4 117

我們還可以通過使用常規(guī)for loop來迭代字符串。

package main

import (
	"fmt"
)

func main() {
	word := "ab$du"

	for i := 0; i < len(word); i++ {
		fmt.Println(i, string(word[i]))
	}
}

如何在Go中循環(huán)map結(jié)構(gòu)

在Golang中,映射是一種將元素存儲在鍵值對中的數(shù)據(jù)結(jié)構(gòu),其中鍵用于識別地圖中的每個(gè)值。它類似于Python和Java等其他語言中的字典和哈希圖。

您可以使用 for...range語句在 Golang 中迭代map,其中它獲取索引及其相應(yīng)值。

例如:

package main

import (
	"fmt"
)

func main() {
	books := map[string]int{
		"maths":     5,
		"biology":   9,
		"chemistry": 6,
		"physics":   3,
	}
	for key, val := range books {
		fmt.Println(key, val)
	}
}

在上面的代碼中,我們定義了一個(gè)地圖,存儲以類型string為鍵,類型int作為其值的書店的詳細(xì)信息。然后,我們使用for..range關(guān)鍵字循環(huán)瀏覽其鍵和值。

在Golang中迭代地圖沒有任何指定的順序,我們不應(yīng)該期望按我們循環(huán)時(shí)定義的順序返回密鑰。

此代碼輸出:

physics 3
maths 5
biology 9
chemistry 6

如果我們不想指定值而只返回鍵,我們根本不定義值變量,而只定義鍵變量。

例如:

package main

import (
	"fmt"
)

func main() {
	books := map[string]int{
		"maths":     5,
		"biology":   9,
		"chemistry": 6,
		"physics":   3,
	}
	for key := range books {
		fmt.Println(key)
	}
}

這輸出以下內(nèi)容:

maths
biology
chemistry
physics

同樣,如果我們對地圖的鍵不感興趣,我們使用下劃線來忽略鍵并為值定義變量。

例如:

package main

import (
	"fmt"
)

func main() {
	books := map[string]int{
		"maths":     5,
		"biology":   9,
		"chemistry": 6,
		"physics":   3,
	}
	for _, val := range books {
		fmt.Println(val)
	}
}

此輸出:

5
9
6
3

如何在Go中循環(huán)Struct

Struct是Golang中的一種數(shù)據(jù)結(jié)構(gòu),用于將不同的數(shù)據(jù)類型組合成一個(gè)。與數(shù)組不同,結(jié)構(gòu)可以包含整數(shù)、字符串、布爾值等——所有這些都集中在一個(gè)地方。

與地圖不同,我們可以輕松地循環(huán)其鍵和值,在Golang中循環(huán)結(jié)構(gòu)需要您使用稱為reflect的軟件包。這允許我們您修改具有任意類型的對象。

例如,讓我們創(chuàng)建一個(gè)結(jié)構(gòu)并循環(huán)它:

package main

import (
	"fmt"
	"reflect"
)

type Person struct {
	Name   string
	Age    int
	Gender string
	Single bool
}

func main() {
	ubay := Person{
		Name:   "John",
		Gender: "Female",
		Age:    17,
		Single: false,
	}
	values := reflect.ValueOf(ubay)
	types := values.Type()
	for i := 0; i < values.NumField(); i++ {
		fmt.Println(types.Field(i).Index[0], types.Field(i).Name, values.Field(i))
	}
}

此輸出:

0 Name John
1 Age 17
2 Gender Female
3 Single false

在上面的代碼中,我們定義了一個(gè)名為Personstruct,具有不同的屬性,并創(chuàng)建了該struct的新實(shí)例。然后,我們使用reflect包來獲取struct及其type值。

通過使用正則for循環(huán),我們增加初始化變量i,直到它達(dá)到結(jié)構(gòu)的長度。

我們使用NumField方法來獲取結(jié)構(gòu)中的字段總數(shù)。types.Field(i).Index方法返回結(jié)構(gòu)中每個(gè)鍵的索引。types.Field(i).Name方法返回結(jié)構(gòu)中每個(gè)鍵的字段名。和values.Field(i)返回結(jié)構(gòu)中每個(gè)鍵的值。

到此這篇關(guān)于詳解如何在Go語言中循環(huán)數(shù)據(jù)結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)Go語言循環(huán)數(shù)據(jù)結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang函數(shù)式編程深入分析實(shí)例

    Golang函數(shù)式編程深入分析實(shí)例

    習(xí)慣與函數(shù)式編程語言的開發(fā)者,會認(rèn)為for循環(huán)和if判斷語句是冗長的代碼,通過使用map和filter處理集合元素讓代碼更可讀。本文介紹Go閉包實(shí)現(xiàn)集合轉(zhuǎn)換和過濾功能
    2023-01-01
  • Golang配置解析神器go?viper使用詳解

    Golang配置解析神器go?viper使用詳解

    viper是一個(gè)很完善的Go項(xiàng)目配置解決方案,很多著名的開源項(xiàng)目都在使用,比如Hugo,Docker都使用了該庫,使用viper可以讓我們專注于自己的項(xiàng)目代碼,而不用自己寫那些配置解析代碼,本文給大家介紹Golang配置解析神器go?viper使用,感興趣的朋友一起看看吧
    2022-05-05
  • Go語言面試題之select和channel的用法

    Go語言面試題之select和channel的用法

    金九銀十面試季到了(PS:貌似今年一年都是面試季),就業(yè)環(huán)境很差,導(dǎo)致從業(yè)人員不得不卷。本文將重點(diǎn)講解一下Go面試進(jìn)階知識點(diǎn)之select和channel,需要的可以參考一下
    2022-09-09
  • Go語言單元測試模擬服務(wù)請求和接口返回

    Go語言單元測試模擬服務(wù)請求和接口返回

    這篇文章主要為大家介紹了Go語言單元測試模擬服務(wù)請求和接口返回示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • golang有用的庫及工具 之 zap.Logger包的使用指南

    golang有用的庫及工具 之 zap.Logger包的使用指南

    這篇文章主要介紹了golang有用的庫及工具 之 zap.Logger包的使用指南,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go語言中?Print?Printf和Println?的區(qū)別解析

    Go語言中?Print?Printf和Println?的區(qū)別解析

    這篇文章主要介紹了Go語言中?Print?Printf和Println?的區(qū)別,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 提升Golang應(yīng)用性能:深入理解Context的應(yīng)用

    提升Golang應(yīng)用性能:深入理解Context的應(yīng)用

    本文將深入探討如何通過深入理解和正確應(yīng)用Go語言中的Context來提升應(yīng)用性能。需要的朋友可以參考下
    2023-09-09
  • Go Web服務(wù)優(yōu)雅平滑重啟

    Go Web服務(wù)優(yōu)雅平滑重啟

    在生產(chǎn)環(huán)境中,當(dāng)我們需要對正在運(yùn)行的服務(wù)進(jìn)行升級時(shí),如何確保不影響當(dāng)前未處理完的請求,同時(shí)又能應(yīng)用新的代碼,下面就來介紹一下Go Web服務(wù)優(yōu)雅平滑重啟,感興趣的可以了解一下
    2025-09-09
  • 一文了解Go語言中的函數(shù)與方法的用法

    一文了解Go語言中的函數(shù)與方法的用法

    與大部分語言一致,Go語言中的函數(shù)與方法定義與其他語言基本一致,但也有一定的差別。本文將通過示例詳細(xì)講講Go語言中函數(shù)與方法的用法,感興趣的可以學(xué)習(xí)一下
    2022-07-07
  • 詳解Go語言中Validator庫的使用方法和用途

    詳解Go語言中Validator庫的使用方法和用途

    github.com/go-playground/validator 是一個(gè) Go 語言的庫,用于對結(jié)構(gòu)體字段進(jìn)行驗(yàn)證,它提供了一種簡單而靈活的方式來定義驗(yàn)證規(guī)則,在這篇文章中,我們將從一個(gè)簡單的問題出發(fā),帶你了解 Validator 庫的用途,也會介紹Validator 的基本使用
    2023-09-09

最新評論

克山县| 达拉特旗| 襄汾县| 新津县| 大竹县| 和硕县| 望谟县| 五家渠市| 临江市| 永年县| 奈曼旗| 南投县| 耿马| 珠海市| 大厂| 青岛市| 灵武市| 桑植县| 乌鲁木齐市| 新泰市| 益阳市| 大田县| 蓬安县| 榆林市| 四子王旗| 苗栗市| 江达县| 香港| 柳河县| 天水市| 昌吉市| 横峰县| 宝应县| 日土县| 赤峰市| 临清市| 浦江县| 游戏| 色达县| 阿合奇县| 中江县|