Golang Slice(kesit) Kullanımı
Slice Kullanımı
Örnek üzerinden gidelim. Misal okul müdürüsünüz ve öğrenci numaralarını tuttuğunuz bir array(dizin)'niz var ve bu dizin 500'lük tanımlanmış. 501. öğrenci numarasını kaydetmek istediğinizde hata alıcaksınız.
Slice'lar boyutu büyüyüp, küçülebilen dinamik dizinlerdir.
Slicelar aynı dizin tanımlar gibi tanımlanırlar.
var og_nums []int
Yukarıda öğrenci numaralarını tutacağımız boş bir slice tanımladık.
Klasik, indeks 0'dan başlar.
Örn:
package main
import "fmt"
func main() {
og_nums := []int{1123, 1234, 1236, 1241}
for _, og_nu := range og_nums {
fmt.Printf("Öğrenci numarası: %d\n",og_nu)
}
}
Bir slice'ın for each döngüsüne girebilmesi için range fonksiyonunu kullanabilirsiniz.
Hiç unutmam bilgisayar mühendisliğine yerleştiğimi ekranda gördüğümde hemen en yakın bir kitapçıya gidip c++ kitabı almıştım. (Bildiğimden değil sağdan soldan duydugum kadar ) Dizinler, charlar falan derken, kendi kendime string'inde aslında bir char arrayi olduğunu düşünmüştüm.
İlk programlama dersi ben Mr. Robot edalarıyla bunu anlatıyordum 🙂
Kıssadan hisse şu ki bir dizin üzerinden de bir slice bir kesit almak mümkün.
var notlar [100]int
zayif := notlar[:45]
eh := notlar[46:70]
...
Gibi ana dizinden kesitler ( slicelar ) aldık.
Slice Fonksiyonları
Make
plaka := make([]int, 81) // 81 elemanlı slice
dersler := make([]string, 2, 10) // 2-10 arası elemanlı slice
Append
Linux kullananlar bilir echo "test" >> test.txt nasıl dosyanın sonuna ekliyorsa "test" kelimesini append kullanıldığında slice'ın sonuna o değer eklenir.
doviz := []string{"euro","dolar","yen"}
doviz = append(doviz,"dinar")
Len ve Cap
Len, slice eleman sayısını, cap ise kapestesini verir.
Copy
Bir kesiti başka bir kesite taşımak için for vs kullanmayalım diye yapmışlar, sağolsunlar. Limitli kopyalama da münkün. ( sadece ilk 5 eleman vs )
Linux sistem yöneticisi olarak başladığım kariyerime devops alanında devam ediyorum. Linux, kubernetes, docker ve go en sevdiğim alanlar.. Bunların dışında GCP ve AWS tecrübem var.
Yorum Yapın