Не понял пример в 4:50, ты передаешь а в параметр v, но не возвращаешь значение обратно. Ты же мог написать а = squareVal(a) и тогда результат функции вернулся бы. Чем указатель лучше простого возврата значения? ________________________________ Досмотрел до конца, понял пример со структурой и понял для чего нужен указатель. Спасибо)
var a int = 4 p := &a func AddToA (pointer *int) { res := *pointer *pointer *pointer = res } Почему здесь, в функцию AddToA мы передаём переменную типа *int, что подразумевает что мы передаём уже распакованный указатель, а затем к этой же переменной применяем ещё раз *, что означает что мы 2 раза распаковываем этот указатель. Почему не передаём переменную типа pointer &int ?
Дело в том, что *int не подразумевает передачу разыменованного указателя. *int - это тип данных. К нему можно применить два специфичных оператора: * (разыменованием) и & (взятие адреса). Т.е *int и *pointer - это не одно и то же. А передавать в ф-ю &int то же самое, что передать +int
🚨Комьюнити, дз, курс golang и backend разработки - t.me/gopher_land 🚨
Не понял пример в 4:50, ты передаешь а в параметр v, но не возвращаешь значение обратно. Ты же мог написать а = squareVal(a) и тогда результат функции вернулся бы. Чем указатель лучше простого возврата значения?
________________________________
Досмотрел до конца, понял пример со структурой и понял для чего нужен указатель. Спасибо)
Очень круто рассказал, теперь я понял почему раньше ловил панику при обращении к nil указателю.
Норм контент, спасибо за рассказ про нил поинтер) и вообще хорошая подача с хорошим объяснением.
var a int = 4
p := &a
func AddToA (pointer *int) {
res := *pointer *pointer
*pointer = res
}
Почему здесь, в функцию AddToA мы передаём переменную типа *int, что подразумевает что мы передаём уже распакованный указатель, а затем к этой же переменной применяем ещё раз *, что означает что мы 2 раза распаковываем этот указатель. Почему не передаём переменную типа pointer &int ?
Дело в том, что *int не подразумевает передачу разыменованного указателя. *int - это тип данных. К нему можно применить два специфичных оператора: * (разыменованием) и & (взятие адреса). Т.е *int и *pointer - это не одно и то же. А передавать в ф-ю &int то же самое, что передать +int
@@denislitvyakov2281 я уже разобрался, но это немного глупо
Хех, знакомая анимашка, видел ее у одной девушки)
здравствуйте, собрали 100
наткнулся сегодня на твое первое видео. теперь буду смотреть все
Вообще на изи понял типо объектов в жс
Бро, шикарный видос
Мда 50 лет развития и мы копипастим под чистую С синтаксис.
Почитайте историю создания языка go. Он во много базируется на С. Странная претензия.