Go 1.23 pridáva nové funkcie pre výrezy a mapy

24. 10. 2024

Sdílet

Golang Autor: Go lang

V najnovšej verzii programovacieho jazyka Go bol do štandardnej knižnice pridaný balíček iter, ktorý umožňuje vytvárať vlastné iterátory. V rámci týchto zmien boli pridané nové funkcie do balíčkov maps a slicesBalíček slices má tieto nové funkcie:

  • All
  • Values
  • Backward
  • Collect
  • AppendSeq
  • Sorted
  • SortedFunc
  • SortedStableFunc
  • Chunk

Nasledujúci príklad ukazuje použitie niektorých nových funkcií pre výrezy:

package main

import (
    "fmt"
    "slices"
)

func main() {

    vals := []int{1, 2, 3, 4, 5, 6, 7, 8}

    for val := range slices.Backward(vals) {
        fmt.Println(val)
    }

    fmt.Println("---------------------------")

    for val := range slices.Chunk(vals, 2) {
        fmt.Println(val)
    }

    fmt.Println("---------------------------")

    words := []string{"sky", "ten", "water", "forest", "cup"}
    for i, v := range slices.All(words) {
        fmt.Println(i, ":", v)
    }

    fmt.Println("---------------------------")

    it := slices.Values(words)
    sorted_words := slices.Sorted(it)

    for _, word := range sorted_words {
        fmt.Println(word)
    }
}

Balíček maps má tieto nové funkcie:

  • All
  • Keys
  • Values
  • Insert
  • Collect

Nasledujúci príklad ukazuje použitie niektorých nových funkcií pre mapy:

package main

import (
    "fmt"
    "maps"
)

func main() {

    countries := map[string]string{
        "sk": "Slovakia",
        "ru": "Russia",
        "de": "Germany",
        "no": "Norway",
    }

    for k := range maps.Keys(countries) {

        fmt.Println(k, ": ", countries[k])
    }

    for v := range maps.Values(countries) {

        fmt.Println(v)
    }

    fmt.Println("------------------------")

    m1 := map[string]string{"po": "Poland"}
    m2 := map[string]string{"ro": "Romania"}

    it := maps.All(countries)
    maps.Insert(m1, it)
    maps.Insert(m2, it)

    countries2 := maps.Collect(it)

    for k, v := range maps.All(countries2) {
        fmt.Println(k, v)
    }
}

Tato zprávička byla zaslána čtenářem serveru Root.cz pomocí formuláře Přidat zprávičku. Děkujeme!

Našli jste v článku chybu?

Autor zprávičky