In der Go-Sprache wird das Schlüsselwort „range“ in einer for-Schleife verwendet, um die Elemente eines Arrays, Slice, Kanals oder Satzes zu iterieren. Die „for range“-Struktur ähnelt der foreach-Anweisung in anderen Sprachen, in Arrays und Slices Es gibt den Index des Elements zurück. Der dem Index entsprechende Wert gibt das „Schlüssel-Wert“-Paar in der Sammlung zurück. Die Syntax lautet „für Schlüssel, Wert := Bereichsdaten{//}“.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.
Go-Sprachbereich (Range)
Das Schlüsselwort „range“ in der Go-Sprache wird verwendet, um die Elemente eines Arrays, Slice, Kanals oder einer Karte in einer for-Schleife zu iterieren. In Arrays und Slices gibt es den Index des Elements und den dem Index entsprechenden Wert zurück, in Sammlungen gibt es ein Schlüssel-Wert-Paar zurück.
Für die Zuordnung wird das nächste Schlüssel-Wert-Paar zurückgegeben. Der Bereich gibt einen oder zwei Werte zurück. Wenn auf der linken Seite des Range-Ausdrucks nur ein Wert verwendet wird, ist dieser Wert der erste Wert in der folgenden Tabelle.
Die Schlüsselwert-for-Schleife in der Go-Sprache verwendet die Syntaxform von for range, die der foreach-Anweisung in anderen Sprachen ähnelt.
Detaillierte Erklärung der for-Range-Schleife in der Go-Sprache
Grammatik
for key, value := range data{ // }
Parameter | Beschreibung |
---|---|
for | for-Range-Schlüsselwort, das in einer Schleife verwendet wird. |
key | Der von der for-Range-Schleife zurückgegebene Schlüssel. |
value | Eine Kopie des von der for-Range-Schleife zurückgegebenen Werts. |
range | für das in der Schleife verwendete Schlüsselwort „range“. |
Daten | für Entfernungsschleifendaten, die durchlaufen werden müssen. |
Anleitung:
Wenn Sie nur den Schlüssel lesen möchten, ist das Format wie folgt:
for key := range oldMap
Oder dieses:
for key, _ := range oldMap
Wenn Sie nur den Wert lesen möchten, ist das Format wie folgt: ?
Index der ZeichenfolgeKopie des Zeichenwerts des Index, der der Zeichenfolge entspricht Wenn der Schlüssel nicht geschrieben ist, dann der Index
Array | Der Index des Arrays | Kopie des dem Index entsprechenden Werts | Wenn der Schlüssel ist nicht geschrieben, dann der Index |
---|---|---|---|
Slice | Der Index des SliceKopie des dem Index entsprechenden Werts | Wenn der Schlüssel nicht geschrieben ist, dann der Schlüssel des Index | |
map | map wird zurückgegeben. Der Wert der Karte gibt eine Kopie des dem Schlüssel entsprechenden Werts zurück. Wenn der Schlüssel nicht geschrieben ist, wird der Wert der Karte zurückgegebenWert sind die vom Kanal akzeptierten Daten | ||
通过 for range 遍历的返回值有一定的规律:
遍历数组、切片——获得索引和值 在遍历代码中,key 和 value 分别代表切片的下标及下标对应的值,下面的代码展示如何遍历切片,数组也是类似的遍历方法: for key, value := range []int{1, 2, 3, 4} { fmt.Printf("key:%d value:%d\n", key, value) } Nach dem Login kopieren 代码输出如下: key:0 value:1 key:1 value:2 key:2 value:3 key:3 value:4 Nach dem Login kopieren 遍历字符串——获得字符 Go语言和其他语言类似,可以通过 for range 的组合,对字符串进行遍历,遍历时,key 和 value 分别代表字符串的索引和字符串中的每一个字符。 下面这段代码展示了如何遍历字符串: var str = "hello 你好" for key, value := range str { fmt.Printf("key:%d value:0x%x\n", key, value) } Nach dem Login kopieren 代码输出如下: key:0 value:0x68 key:1 value:0x65 key:2 value:0x6c key:3 value:0x6c key:4 value:0x6f key:5 value:0x20 key:6 value:0x4f60 key:9 value:0x597d Nach dem Login kopieren 代码中的变量 value,实际类型是 rune 类型,以十六进制打印出来就是字符的编码。 遍历 map——获得 map 的键和值 对于 map 类型来说,for range 遍历时,key 和 value 分别代表 map 的索引键 key 和索引对应的值,一般被称为 map 的键值对,因为它们是一对一对出现的,下面的代码演示了如何遍历 map。 m := map[string]int{ "hello": 100, "world": 200, } for key, value := range m { fmt.Println(key, value) } Nach dem Login kopieren 代码输出如下: hello 100 world 200 Nach dem Login kopieren 注意 对 map 遍历时,遍历输出的键值是无序的,如果需要有序的键值对输出,需要对结果进行排序。 遍历通道(channel)——接收通道数据 for range 可以遍历通道(channel),但是通道在遍历时,只输出一个值,即管道内的类型对应的数据。 下面代码为我们展示了通道的遍历: c := make(chan int) go func() { c <- 1 c <- 2 c <- 3 close(c) }() for v := range c { fmt.Println(v) } Nach dem Login kopieren 代码说明如下:
在遍历中选择希望获得的变量 在使用 for range 循环遍历某个对象时,一般不会同时需要 key 或者 value,这个时候可以采用一些技巧,让代码变得更简单,下面将前面的例子修改一下,参考下面的代码示例: m := map[string]int{ "hello": 100, "world": 200, } for _, value := range m { fmt.Println(value) } Nach dem Login kopieren 代码输出如下: 100 200 Nach dem Login kopieren 在上面的例子中将 key 变成了下划线_,这里的下划线就是匿名变量。
再看一个匿名变量的例子: for key, _ := range []int{1, 2, 3, 4} { fmt.Printf("key:%d \n", key) } Nach dem Login kopieren 代码输出如下: key:0 key:1 key:2 key:3 Nach dem Login kopieren 在该例子中,value 被设置为匿名变量,只使用 key,而 key 本身就是切片的索引,所以例子输出索引。 我们总结一下 for 的功能:
Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Schlüsselwort „range' in der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website! Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Aktuelle Ausgaben
Starten Sie einen transparenten Browser, um das Erlebnis von Webanwendungen und PWA zu verbessern [unterstützt statisches HTML, CSS und JavaScript] [Benutzern die Anzeige von Desktop-Hintergründen in unseren Webanwendungen/PWA ermöglichen]
Ich bin ein Junior-Frontend-Entwickler und Designer, der derzeit eine Webanwendung (Chat) ...
Aus 2024-04-05 13:50:12
0
1
1367
verwandte Themen
Mehr>
|