Go-da ümumi kod yazmağın hansı yolları var?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində ümumi kod yazmağın aşağıdakı əsas üsulları mövcuddur:
-
İnterfeyslər: Müəyyən bir metodlar toplusunu ödəyən hər hansı bir tip ilə işləyən funksiyalar yazmağa imkan verir.
// Reader interfeisinin tərifi type Reader interface { Read(p []byte) (n int, err error) } // Reader-i həyata keçirən hər hansı bir tip ilə işləyən funksiya func ProcessData(r Reader) error { // Reader-dan məlumat oxuma return nil } -
Boş interfejs (
interface{}): Hər hansı bir dəyəri təmsil edə bilən ümumi tip. İstifadə etməzdən əvvəl tipə çevirmə tələb edir.func PrintAnything(v interface{}) { // Tipə çevirmə və yoxlama if s, ok := v.(string); ok { fmt.Println("Bu bir sətirdir:", s) } else if i, ok := v.(int); ok { fmt.Println("Bu bir tam ədəddir:", i) } } -
Generics / Tip parametrli tiplər (type parameters): Deklarasiya zamanı müxtəlif tiplər toplusu ilə işləyən funksiyalar və tiplər yazmağa imkan verir. Go 1.18-də əlavə olunub.
// Hər hansı T tipi ilə dilimlə işləyən funksiya func PrintSlice[T any](s []T) { for _, v := range s { fmt.Println(v) } } // T1 və T2 parametrləri ilə ümumi Pair tipi type Pair[T1, T2 any] struct { First T1 Second T2 } -
Refleksiya (
reflect): Tipləri və dəyərləri iş vaxtında araşdırmağa və onlarla qarşılıqlı əlaqəyə imkan verir. Çox vaxt mürəkkəb ssenarilər üçün istifadə olunur, amma digər yanaşmalardan daha az effektiv və təhlükəsiz ola bilər.import "reflect" func GetTypeName(v interface{}) string { return reflect.TypeOf(v).Name() }
Yöntəm seçimi konkret tapşırıq və tələb olunan elastiklik və performans səviyyəsindən asılıdır. Müasir Go-da ümumi algoritmlər və məlumat strukturları yaratmaq üçün generiklər üstünlük təşkil edir. İnterfeyslər çoxşaxəlilik və davranışın müəyyənləşdirilməsi üçün əsas mexanizmdir. Boş interfejs və refleksiya daha az istifadə olunur, daha çox xüsusi hallarda.