CodeBlanks Logo Icon CodeBlanks

Özet - Array ve slice

Slice ve append'i birleştirerek bir görev listesi yazarsın.

Array ve slice özeti

Array: sabit uzunluk, değer türü (atamada kopyalanır), [3]int. Slice: esnek, bir diziye bakan görünüm (atamada paylaşılır), []int; make, append, copy, s[a:b], len, cap. Kural: append sonucunu her zaman ata; bağımsız kopya gerekiyorsa copy ya da slices.Clone kullan.

import "slices"

s := []int{3, 1, 2}
slices.Sort(s)                       // [1 2 3]
fmt.Println(slices.Contains(s, 2))   // true
fmt.Println(slices.Index(s, 3))      // 2

İki boyutlu dilim

Dilimlerin dilimi ile tablo kurulur; her satır ayrı oluşturulur:

tablo := make([][]int, 3)
for i := range tablo {
    tablo[i] = make([]int, 3)
}
tablo[1][2] = 7
fmt.Println(tablo)  // [[0 0 0] [0 0 7] [0 0 0]]

Satırların uzunlukları farklı olabilir (düzensiz tablo).

Uygulama Benzersiz ve sıralı

[]int{4, 2, 4, 1, 2, 9} dilimini slices.Sort ile sırala, ardından slices.Compact ile ardışık tekrarları sil ve sonucu yazdır.

Başlangıç kodu

main.go
package main

import (
    "fmt"
    "slices"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import (
    "fmt"
    "slices"
)

func main() {
    s := []int{4, 2, 4, 1, 2, 9}
    slices.Sort(s)
    s = slices.Compact(s)
    fmt.Println(s)
}

Beklenen çıktı

[1 2 4 9]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir dilimden dizin 2'deki elemanı silmenin doğru yolu hangisidir?

  • s.Remove(2)
  • s = slices.Delete(s, 2, 3) Doğru cevap
  • delete(s, 2)
  • s[2] = nil

Açıklama: slices.Delete(s, i, j) [i, j) aralığını siler ve yeni dilimi döndürür; delete yalnızca map'ler içindir.

2 Sırala

Soru
s := []int{5, 2, 8}
slices.____(s)
fmt.Println(s)  // [2 5 8]
Cevap
s := []int{5, 2, 8}
slices.Sort(s)
fmt.Println(s)  // [2 5 8]

Açıklama: slices.Sort dilimi yerinde artan sıraya dizer.

3 Grubun özeti

Kavram Anlamı
[3]int Array, sabit uzunluk
[]int Slice, esnek
append Ekle ve ata
slices.Clone Bağımsız kopya

Başlangıç bölümündeki tüm dersler