English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriais básicos em Golang

Controles em Golang

Funções & Métodos em Golang

Estruturas em Golang

Slices & Arrays em Golang

Strings em Golang

Ponteiros em Golang

Interfaces em Golang

Concorrência em Golang

Exceções em Golang

Miscelâneas em Golang

Tutoriais em Go

Cópia de slice em Gosliceé permitida para armazenar elementos de tipos semelhantes, não permitindo que elementos de tipos diferentes sejam armazenados na mesma sequência de comprimento variável. No slice, você pode usar o slice fornecido pelo idioma Go:A função copy()

Copiar um slice para outro slice. Em outras palavras, através da função copy() é possível copiar elementos de um slice para outro slice.

Sintaxe:

func copy(dst, src []Type) intaqui,dstrepresenta o slice de destino, enquantosrcrepresenta o slice de origem. Ele retornará o número de elementos a serem copiados, o qual develen(dst)oulen(src)doO valorVamos usar o exemplo fornecido para demonstrar como usá-lo:

package main
import "fmt"
func main() {
    //Criar slice
    número de elementos. Devido a1 := []int{58, 69, 40, 45, 11, 56, 67, 21, 65}
    var slc2 []int
    número de elementos. Devido a3 := make([]int, 5)
    número de elementos. Devido a4 := []int{78, 50, 67, 77}
    //Antes de copiar
    fmt.Println("Slice_1:", slc1)
    fmt.Println("Slice_2:", slc2)
    fmt.Println("Slice_3:", slc3)
    fmt.Println("Slice_4:", slc4)
    //Cópia de fatias
    elementos.1 := copy(slc2, slc1)
    fmt.Println("\nSlice:", slc2)
    fmt.Println("Número total de elementos copiados:", copy_1)
    elementos.2 := copy(slc3, slc1)
    fmt.Println("\nSlice:", slc3)
    fmt.Println("Número total de elementos copiados:", copy_2)
    elementos.3 := copy(slc4, slc1)
    fmt.Println("\nSlice:", slc4)
    fmt.Println("Número total de elementos copiados:", copy_3)
    //Não se confunda, porque acima
    //Foi copiado slc4da linha de código
    //E, portanto, realiza modificações permanentes, ou seja:
    // número de elementos. Devido a 4Inclui[58 69 40 45]
    elementos.4 := copy(slc1, slc4)
    fmt.Println("\nSlice:", slc1)
    fmt.Println("Número total de elementos copiados:", copy_4)
}

Saída:

Slice_1: [58 69 40 45 11 56 67 21 65]
Slice_2: []
Slice_3: [0 0 0 0 0]
Slice_4: [78 50 67 77]
Slice: []
Número total de elementos copiados: 0
Slice: [58 69 40 45 11]
Número total de elementos copiados: 5
Slice: [58 69 40 45]
Número total de elementos copiados: 4
Slice: [58 69 40 45 11 56 67 21 65]
Número total de elementos copiados: 4

Instruções de uso:No exemplo a seguir, temos quatro slices de tipos inteiros e executamos operações de cópia nelas:

  • copy 1:= copy(slc2, slc1): Aqui, slc2aqui, slc1é a fatia de destino, slc2é a fatia de origem. Aqui, quando tentamos copiar na fatia de1ao copiar a fatia de2é uma fatia nil, então o método copy retornará o menor comprimento entre a fatia de origem e a fatia de destino, para a fatia vazia slc2é zero, o menor comprimento.

  • elementos.2copy_3:= copy(slc1aqui, slc3é a fatia de destino, enquanto1é a fatia de origem. aqui, slc3fatia está vazia, portanto, quando tentamos usar a função copy() para copiar slc1fatia para slc3fatia de5,portanto, começa a partir do índice 0 do slc1fatia foi copiada5número de elementos, porque o tamanho do fatia é5,portanto, pode armazenar não pode armazenar mais do que5,portanto, não pode armazenar mais do que

  • elementos.3copy_4:= copy(slc1):não pode armazenar mais do quenúmero de elementos. Devido a4aqui,número de elementos. Devido a1é a fatia de destino, enquantonúmero de elementos. Devido a1 é a fatia de origem. Quando tentamos usar a função copy() para copiarnúmero de elementos. Devido a4 fatia de4ao copiar fatianúmero de elementos. Devido a4 tamanho do fatia de4tamanho do fatia de4,portanto, não pode armazenar mais do que

  • elementos.4copy_1:= copy(slc4,slc4): Aqui, após a saída, pode haver confusão. Veja, na linha de código acima slc4já foi atualizado. Portanto, agora considerando slc4número de elementos, enquanto slc4atualizado. Portanto, agora slc1número de elementos, enquanto slc9número de elementos. Portanto, o número total de elementos a serem copiados será4。

Exemplo2:

package main 
  
import "fmt"
  
func main() { 
  
    //Fatia de origem
    slice_1 := []string{"w3codeboxs", "for", "w3codeboxs", "GFG"} 
  
    //Criação do fatia de destino, usando a função make
    slice_2 := make([]string, 3) 
  
    //Antes da cópia
    fmt.Println("Slice_1: ",slice_1) 
    fmt.Println("Slice_2: ",slice_2) 
  
    //Copia de slice_1copia para slice_2
    Copy_1 := copy(slice_2, slice_1) 
    fmt.Println("\nSlice_1: ",slice_1) 
    fmt.Println("Slice_2: ",slice_2) 
    fmt.Println("Número de elementos copiados: ", Copy_1) 
  
        //Cópia de fatias
        //Uso da função de cópia
        //Claramente, o código
    Copy_2 := copy(slice_1, []string{"123w3codeboxs", "gfg"}) 
    fmt.Println("\nSlice_1 : ",slice_1) 
    fmt.Println("Número de elementos copiados:", Copy_2)   
}

Saída:

Slice_1:  [w3codeboxs for w3codeboxs GFG]
Slice_2:  [  ]
Slice_1:  [w3codeboxs for w3codeboxs GFG]
Slice_2:  [w3codeboxs for w3codeboxs]
Número de Elementos Copiados:  3
Slice_1:  [123w3codeboxs gfg w3codeboxs GFG]
Número de Elementos Copiados: 2