網站首頁 編程語言 正文
引言
數組是存儲類似類型數據的強大數據結構。您可以通過索引識別和訪問其中的元素。
在Golang中,您可以通過在0初始化變量i并增加變量直到它達到數組的長度,使用for
循環循環數組。
它們的語法如下所示:
for i := 0; i < len(arr); i++ { // perform an operation }
例如,讓我們循環一個整數數組:
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]) } }
在上面的代碼中,我們定義了一個名為numbers
的整數數組,并通過初始化變量i
循環它們。然后,我們在增加i
的同時打印出數組每個索引的值。
上面的代碼輸出如下:
7
9
1
2
4
5
我們還可以使用range
關鍵字循環數組,該關鍵字迭代數組的整個長度。
語法如下所示:
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) } }
在上面的代碼中,我們定義了一個字符串數組,并使用for..range
關鍵字循環其索引和值。
for...range
的語法更簡單,更容易理解。您使用它來迭代不同的數據結構,如數組、字符串、映射、切片等。
這輸出以下內容:
0 a
1 b
2 c
3 d
4 e
5 f
假設我們忽略索引并簡單地打印出數組的元素,您只需將index
變量替換為下劃線即可。
例如:
package main import ( "fmt" ) func main() { arr := []string{"a", "b", "c", "d", "e", "f"} for _, a := range arr { fmt.Println(a) } }
在上面的代碼中,我們修改了前面的示例,并將index
變量替換為下劃線。我們這樣做是為了忽略索引,而是輸出數組的元素。
這輸出以下內容:
a
b
c
d
e
f
如何在Go中循環字符串
編程中的字符串是不可變的——這意味著您在創建它們后無法修改它們。它們是一個或多個字符(如字母、數字或符號)的有序序列,可以是常數或變量。
在Golang中,字符串與Python或JavaScript等其他語言不同。它們表示為UTF-8字節序列,字符串中的每個元素都表示一個字節。
您使用for...range
循環或使用常規循環循環字符串。
例如:
package main import ( "fmt" ) func main() { word := "Ab$du" for index, a := range word { fmt.Println(index, string(a)) } }
在上面的代碼中,我們定義了一個包含不同字符的字符串,并循環了其條目。字符串在Golang中表示為字節,這就是為什么在打印出來時,我們需要將每個值轉換為類型string
。
此輸出:
0 A
1 b
2 $
3 d
4 u
如果我們沒有將每個條目轉換為字符串,Golang會打印出字節表示形式。
例如:
package main import ( "fmt" ) func main() { word := "Ab$du" for index, a := range word { fmt.Println(index, a) } }
結果:
0 65
1 98
2 36
3 100
4 117
我們還可以通過使用常規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中循環map結構
在Golang中,映射是一種將元素存儲在鍵值對中的數據結構,其中鍵用于識別地圖中的每個值。它類似于Python和Java等其他語言中的字典和哈希圖。
您可以使用?for...range
語句在 Golang 中迭代map
,其中它獲取索引及其相應值。
例如:
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) } }
在上面的代碼中,我們定義了一個地圖,存儲以類型string
為鍵,類型int
作為其值的書店的詳細信息。然后,我們使用for..range
關鍵字循環瀏覽其鍵和值。
在Golang中迭代地圖沒有任何指定的順序,我們不應該期望按我們循環時定義的順序返回密鑰。
此代碼輸出:
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) } }
這輸出以下內容:
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中循環Struct
Struct是Golang中的一種數據結構,用于將不同的數據類型組合成一個。與數組不同,結構可以包含整數、字符串、布爾值等——所有這些都集中在一個地方。
與地圖不同,我們可以輕松地循環其鍵和值,在Golang中循環結構需要您使用稱為reflect
的軟件包。這允許我們您修改具有任意類型的對象。
例如,讓我們創建一個結構并循環它:
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
在上面的代碼中,我們定義了一個名為Person
的struct
,具有不同的屬性,并創建了該struct
的新實例。然后,我們使用reflect
包來獲取struct
及其type
值。
通過使用正則for
循環,我們增加初始化變量i
,直到它達到結構的長度。
我們使用NumField
方法來獲取結構中的字段總數。types.Field(i).Index
方法返回結構中每個鍵的索引。types.Field(i).Name
方法返回結構中每個鍵的字段名。和values.Field(i)
返回結構中每個鍵的值。
結論
原文鏈接:https://juejin.cn/post/7157651221375877134
相關推薦
- 2021-12-09 VS2017開發C語言出現“no_init_all“的解決辦法_C 語言
- 2022-04-07 Go語言中int、float、string類型之間相互的轉換_Golang
- 2024-04-07 MyBatis批量插入的五種方式(推薦MyBatis以集合方式批量新增)
- 2022-05-12 van-checkbox 全選,解決單個點擊后會取消全部的問題
- 2022-07-10 $route和this.$router區別
- 2022-03-19 centos7修改網卡后無法上網問題解決過程_Linux
- 2022-01-05 el-select使用了多選時,選中多個會撐開原始高度,樣式錯亂,使用tag展示,一行顯示全部內容,
- 2022-07-04 PyTorch計算損失函數對模型參數的Hessian矩陣示例_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支