Menu
Coddy logo textTech

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]
challenge icon

Wyzwanie

Łatwy

Napisz 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

Poćwicz samodzielnie: Kompilator Go online