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]
}
Тук функцията получава референция към среза, затова промените вътре в функцията се отразяват на оригиналния срез. Това позволява ефективна работа с големи структури от данни без копиране.