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