Middle+
25
Что происходит при компиляции функции с дженериками?
Companies where asked
МВидео/эльдорадо
Answer from AI
sobes.tech AI
При компиляции функции с дженериками в Go компилятор создает специализированные версии функции для каждого конкретного типа, с которым она используется. Это называется мономорфизацией.
То есть, если у вас есть функция с параметром типа T, и вы вызываете её с int и string, компилятор сгенерирует две версии функции — для int и для string. Это позволяет сохранить типобезопасность и производительность, так как в скомпилированном коде нет обобщённых типов, а только конкретные реализации.
Пример:
func PrintSlice[T any](s []T) {
for _, v := range s {
fmt.Println(v)
}
}
// При вызове PrintSlice([]int{1,2,3}) и PrintSlice([]string{"a", "b"})
// компилятор создаст две версии функции для int и string.
Таким образом, дженерики в Go реализованы через генерацию кода для конкретных типов во время компиляции.