ОСНОВЫ ГОЛАНГА
Овладение заявлением о диапазоне силы го
Go, также известный как Golang, — это мощный и эффективный язык программирования, предлагающий широкий спектр функций и функций. Среди этих функций — универсальный оператор range, который обеспечивает элегантный и лаконичный способ перебора различных структур данных. В этом сообщении блога мы рассмотрим возможности оператора Go range и узнаем, как использовать весь его потенциал для упрощения и улучшения вашего кода.
Основы диапазона:
Оператор range в Go в основном используется для перебора структур данных, таких как массивы, срезы, карты, строки и каналы. Он возвращает одно или два значения, в зависимости от типа итерируемой структуры данных.
Итерация по массивам и срезам:
При использовании range с массивами и срезами он возвращает два значения: индекс и значение соответствующего элемента. Вот пример:
import (
"fmt"
)
func main() {
numbers := []int{1, 2, 3, 4, 5}
for index, value := range numbers {
fmt.Printf("Index: %d, Value: %d\n", index, value)
}
}
Вывод будет:
Index: 0, Value: 1 Index: 1, Value: 2 Index: 2, Value: 3 Index: 3, Value: 4 Index: 4, Value: 5
Итерация по картам:
При переборе карты с использованием range он возвращает два значения: ключ и соответствующее значение. Вот пример:
package main
import (
"fmt"
)
func main() {
userInfo := map[string]string{
"name": "John Doe",
"email": "[email protected]",
"role": "admin",
}
for key, value := range userInfo {
fmt.Printf("Key: %s, Value: %s\n", key, value)
}
}
Вывод будет:
Key: name, Value: John Doe Key: email, Value: [email protected] Key: role, Value: admin
Итерация по строкам:
В Go строки представляют собой последовательности символов Unicode. При переборе строки с использованием range возвращается два значения: индекс (позиция байта) и соответствующая руна Unicode. Вот пример:
package main
import (
"fmt"
)
func main() {
message := "Hello, 世界"
for index, runeValue := range message {
fmt.Printf("Index: %d, Rune: %c\n", index, runeValue)
}
}
Вывод будет:
Index: 0, Rune: H Index: 1, Rune: e Index: 2, Rune: l Index: 3, Rune: l Index: 4, Rune: o Index: 5, Rune: , Index: 6, Rune: Index: 7, Rune: 世 Index: 10, Rune: 界
Итерация по каналам:
При переборе канала с использованием range он получает значения, отправленные по каналу, пока канал не будет закрыт. Вот пример:
package main
import "fmt"
func main() {
ch := make(chan int)
go func() {
defer close(ch)
for i := 1; i <= 5; i++ {
ch <- i
}
}()
for value := range ch {
fmt.Println(value)
}
}
Вывод будет:
1 2 3 4 5
Игнорирование значений и использование подчеркивания:
В некоторых сценариях вас может интересовать только одно из значений, возвращаемых range, а другое значение не требуется. Ниже приведен пример, где мы игнорируем key, используя подчеркивание.
package main
import "fmt"
func main() {
userInfo := map[string]string{
"name": "John Doe",
"email": "[email protected]",
"role": "admin",
}
for _, value := range userInfo {
fmt.Println(value)
}
}
Вывод будет:
John Doe [email protected] admin
мы также можем игнорировать значение, просто не упоминая его в цикле for
package main
import "fmt"
func main() {
userInfo := map[string]string{
"name": "John Doe",
"email": "[email protected]",
"role": "admin",
}
for key := range userInfo {
fmt.Println(key)
}
}
Вывод будет:
email role name
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Смотрите больше контента в публикации Level Up Coding
- 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
- 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"
🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу