Sobes.tech
Middle+

Genel programlama araçları nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Golang'da aşağıdaki genel programlama araçları (generikler) bulunmaktadır:

  1. Parametreli türler: Yapıların, arayüzlerin ve fonksiyonların, derleme aşamasında katı şekilde belirtilmeden farklı veri türleriyle çalışmasına olanak tanır. Veri türleri, tür veya fonksiyon adından sonra köşeli parantezler içinde belirtilir.

    // Parametreli tür içeren yapı örneği
    type Stack[T any] struct {
    	elements []T
    }
    
    // Parametreli türlerle fonksiyon örneği
    func Map[T, U any](collection []T, f func(T) U) []U {
    	result := make([]U, len(collection))
    	for i, item := range collection {
    		result[i] = f(item)
    	}
    	return result
    }
    
  2. Tür kısıtlamaları (Type Constraints): Kullanılabilecek türler kümesini tanımlar. Türlerin evrenselliğini sınırlandırmaya ve işlemlerin güvenliğini sağlamaya olanak tanır.

    • Arayüzler: Herhangi bir arayüz kendi başına bir tür kısıtlamasıdır.
    • Birleşik arayüzler: Birden fazla tür veya arayüzü | operatörüyle birleştirmeye olanak tanır.
    // Birleşik arayüz kullanılarak tür kısıtlaması örneği
    type Number interface {
    	int | int8 | int16 | int32 | int64 |
    		uint | uint8 | uint16 | uint32 | uint64 | uintptr |
    		float32 | float64 |
    		complex64 | complex128
    }
    
    // Tür kısıtlamasını kullanan fonksiyon
    func Add[T Number](a, b T) T {
    	return a + b
    }
    

Bu araçlar Go 1.18 sürümünde eklendi. Öncesinde, benzer işlevselliği sağlamak için arayüzler (interface{}) ve yansıma kullanılıyordu, bu da tür güvenliğini ve performansı azaltıyordu.