"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como o relembramento se comporta com as matrizes subjacentes nas fatias Go?

Como o relembramento se comporta com as matrizes subjacentes nas fatias Go?

Postado em 2025-02-06
Navegar:331

How Does Re-slicing Behave with Underlying Arrays in Go Slices?

re-atrelindo as fatias em go: confusion and Clarity

em Go, as fatias são uma maneira poderosa e eficiente de representar matrizes de dados. No entanto, entender seus meandros pode ser um desafio para iniciantes. Um desses aspectos é o conceito de recortes de recibos. importar "fmt" func main () { a: = make ([] int, 5) printslice ("a", a) B: = Make ([] int, 0, 5) printslice ("b", b) C: = B [: 2] printslice ("c", c) D: = C [2: 5] PrintSlice ("D", D) } func printslice (s string, x [] int) { fmt.printf ("%s len =%d cap =%d%v \ n", s, len (x), cap (x), x) }

O programa cria quatro fatias: a, b, c e d. O resultado surpreendente é que a fatia C, criada como uma fatia dos dois primeiros elementos de B, tem uma capacidade de 5 em vez de 2.

package main

import "fmt"

func main() {
    a := make([]int, 5)
    printSlice("a", a)
    b := make([]int, 0, 5)
    printSlice("b", b)
    c := b[:2]
    printSlice("c", c)
    d := c[2:5]
    printSlice("d", d)
}

func printSlice(s string, x []int) {
    fmt.Printf("%s len=%d cap=%d %v\n",
        s, len(x), cap(x), x)
}

Nesse caso, modificar o valor de D também modifica o valor de c, demonstrando que C e D são apenas janelas diferentes sobre a mesma matriz subjacente.

entendendo o conceito de re- O corte é crucial para trabalhar efetivamente com fatias em Go. Ele permite criar fatias que se ajustem dinamicamente a diferentes tamanhos de dados sem a necessidade de copiar ou realocar memória.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3