Sobes.tech
Junior — Middle

Можете ли да обясните какви са типовете, предавани по референция в програмните езици?

sobes.tech AI

Отговор от AI

В езици за програмиране типовете, предавани по референция, означават, че при предаване на променлива към функция или метод, не се предава копие на стойността, а референция (указател) към оригиналните данни. Промените вътре във функцията ще повлияят на оригиналния обект.

В Go, примитивните типове (int, float, bool) се предават по стойност, докато сложните типове като срезове (slices), карти (maps), указатели (pointers), канали (channels) и интерфейси (interfaces) се предават по референция.

Пример с предаване на срез по референция:

func modifySlice(s []int) {
    s[0] = 100
}

func main() {
    nums := []int{1, 2, 3}
    modifySlice(nums)
    fmt.Println(nums) // Ще изведе [100 2 3]
}

Тук функцията получава референция към среза, затова промените вътре в функцията се отразяват на оригиналния срез. Това позволява ефективна работа с големи структури от данни без копиране.