Kopiowanie slice’a
Lekcja 13 z 21 w kursie Slice’y i mapy w Go w Coddy.
W Go istnieją wbudowane funkcje, których możemy używać z wycinkami. Jednej z nich użyliśmy już na poprzedniej lekcji — jest to funkcja <strong>append</strong>. Pozwala nam dodawać elementy do istniejącego wycinka. Nazywamy je funkcjami pomocniczymi i możesz uwzględnić to jako różnicę między tablicami a wycinkami w Go: tablice nie mają takich funkcji.
W tej lekcji omówimy funkcję <strong>copy</strong>, która pozwala kopiować wycinek. Działa ona tak:
str := []string{"Python", "Golang", "Java", "TypeScript"}
newStr := make([]string, 4)
copy(newStr, str)
fmt.Println(newStr)Wynikiem będzie:
[Python Golang Java TypeScript]Za pomocą funkcji <strong>copy</strong> kopiujemy elementy z wycinka <strong>str</strong> do wycinka <strong>newStr</strong>. Składnia wygląda tak: <strong>copy(destination, source)</strong>.
A co, jeśli pojemność nowego wycinka jest mniejsza niż pojemność wycinka źródłowego? Zobaczmy przykład:
str := []string{"Python", "Golang", "Java", "TypeScript"}
newStr := make([]string, 3)
copy(newStr, str)
fmt.Println(newStr)Jeśli uruchomimy ten kod, otrzymamy:
[Python Golang Java]Ponieważ pojemność nowego wycinka wynosi 3, jest więc miejsce tylko na 3 elementy.
Zobaczmy przykład w odwrotnej sytuacji:
str := []int{23, 34, 56, 77}
newStr := make([]int, 6)
copy(newStr, str)
fmt.Println(newStr)W tym przypadku pojemność nowego wycinka jest większa niż pojemność wycinka źródłowego, więc elementy zostaną skopiowane, a pozostałe miejsca będą miały wartość domyślną, która dla typu int wynosi 0:
[23 34 56 77 0 0]Wyzwanie
ŁatwyNapisz program, który pobiera dwie tablice wycinków i łączy je w nowy wycinek, a następnie wyświetla go na ekranie.
W podanym kodzie definiujemy dwa wycinki liczb całkowitych.
Tutaj musisz użyć operatora wycinka oraz funkcji kopiującej.
Jeśli potrzebujesz dodatkowej pomocy, skorzystaj z podpowiedzi.
Spróbuj swoich sił
package main
import (
"fmt"
)
func main() {
// dwa wycinki — nie zmieniaj tego!
str := []int{1, 2, 3, 4}
str2 := []int{5, 6, 7, 8}
// Zdefiniuj nowy wycinek
// Skopiuj element
// Skopiuj za pomocą operatora wycinka
// Wypisz nowy wycinek
fmt.Println()
}Wszystkie lekcje w sekcji Slice’y i mapy w Go
1Wprowadzenie
Wprowadzenie3Slice od kuchni
Slice to tablicaSlice z makeKopiowanie slice’aUsuń elementWyzwanie podsumowujące #1Wyzwanie podsumowujące #2Poćwicz samodzielnie: Kompilator Go online