Tür Parametresi Söz Dizimi
[T any] ile genel işlevler ve türler
Tür Parametresi Söz Dizimi, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
Jeneriklerin temeli
Go 1.18'den önce, birden çok türle çalışan kod için ya tür güvenliğini kaybettiren interface{}/any ya da kod üretimi gerekiyordu. Jenerikler, derleme zamanında çok biçimlilik için tür parametreleri ekler.
Jenerik işlev sözdizimi
Tür parametrelerini işlev adından sonra köşeli parantez içinde bildirin:
func Map[T, U any](s []T, f func(T) U) []U {
result := make([]U, len(s))
for i, v := range s {
result[i] = f(v)
}
return result
}
nums := Map([]int{1,2,3}, func(n int) string {
return strconv.Itoa(n)
})Tür çıkarımı
Derleyici, çoğu durumda türleri işlev bağımsız değişkenlerinden çıkarır. Çıkarım başarısız olursa bunları açıkça belirtebilirsiniz.
// Inferred:
nums := Map([]int{1,2,3}, strconv.Itoa)
// Explicit:
nums := Map[int, string]([]int{1,2,3}, strconv.Itoa)Jenerik türler
Yapılar ve diğer türler de tür parametrelerine sahip olabilir:
type Stack[T any] struct {
items []T
}
func (s *Stack[T]) Push(v T) { s.items = append(s.items, v) }
func (s *Stack[T]) Pop() (T, bool) {
if len(s.items) == 0 { var zero T; return zero, false }
n := len(s.items)-1
v := s.items[n]
s.items = s.items[:n]
return v, true
}Birden çok tür parametresi
İşlevler ve türler birden çok tür parametresine sahip olabilir:
type Pair[K, V any] struct { Key K; Value V }
func Zip[K, V any](keys []K, vals []V) []Pair[K, V] {
result := make([]Pair[K, V], min(len(keys), len(vals)))
for i := range result {
result[i] = Pair[K, V]{keys[i], vals[i]}
}
return result
}Tür parametresinin sıfır değeri
var zero T ile sıfır değerine sahip bir değişken bildirin. Bu, jenerik bir işlevden "değer yok" sonucu döndürürken gereklidir.
func First[T any](s []T) (T, bool) {
if len(s) == 0 { var zero T; return zero, false }
return s[0], true
}Jenerik türlerde yöntemler
Jenerik bir türdeki yöntemler kendi tür parametrelerini değil, türün parametrelerini kullanır. Bir yöntem ek tür parametreleri tanımlayamaz.
type Pair[K, V any] struct{ K K; V V }
func (p Pair[K, V]) Swap() Pair[V, K] { return Pair[V, K]{p.V, p.K} }Somutlaştırma
Jenerik bir türün somut bir tür bağımsız değişkeniyle kullanılması somutlaştırma olarak adlandırılır. Bu işlem çalışma zamanında değil, derleme zamanında gerçekleşir — kutulama ek yükü yoktur.
s := Stack[int]{}
s.Push(42)Tür takma adları ve jenerik türler
Somutlaştırılmış jenerik türler için tür takma adları oluşturabilirsiniz:
type IntStack = Stack[int]Sınırlamalar
Tür parametreleri tür seçimleriyle veya tür doğrulamalarıyla kullanılamaz. Jenerik türlerdeki yöntemler ek tür parametrelerine sahip olamaz. Kısıtlamalar olmadan, işleçleri aşırı yüklenmiş türlerde jenerikler kullanılamaz.
Jenerikler ne zaman kullanılmalı
Alternatifin kod yinelemesi veya güvenli olmayan dönüştürmeler olacağı, gerçekten türden bağımsız algoritmalar (kapsayıcı türleri ve Map/Filter/Reduce gibi işlevsel yardımcılar) için jenerikleri kullanın.
Hızlı Kontrol
Jenerik bir işlevde tür parametreleri nerede bildirilir?
Özet: Tür parametrelerinin sözdizimi
Temel noktalar:
- Köşeli parantez içinde tür parametreleri: func Foo[T any](...)
- İşlevlerde ve türlerde (yapılar vb.) çalışır
- Derleyici, çoğu durumda tür bağımsız değişkenlerini bağımsız değişkenlerden çıkarır
- Sıfır değeri: var zero T; yöntem düzeyinde tür parametresi yok
Sıkça Sorulan Sorular
“Tür Parametresi Söz Dizimi” dersi ücretsiz mi?
Evet — “Tür Parametresi Söz Dizimi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“Tür Parametresi Söz Dizimi” dersinde ne öğreneceğim?
[T any] ile genel işlevler ve türler Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Tür Parametresi Söz Dizimi” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Tür Parametresi Söz Dizimi
- Kısıtlamalar: comparable ve Arayüzler
- Genel Veri Yapıları
- Uygulamada Generics: Tuzaklar