Что такое lvalues и rvalues в Go ?



Ответ:

В Go есть два типа выражений:



lvalue − выражение, которое ссылается на какой-то явный участок памяти называется “lvalue” (“Locator value“), при этом выражение может находится с любой стороны от оператора присваивания.



rvalue − термин r-value (“Raw value“?) применяется к данным, которые хранятся в каком-то участке памяти.

Переменные являются l-values, и могут указываться с левой стороны (тем не менее – не “left-value“, а “locator value“). Числовые литералы, в свою очередь, являются r-values, и не могут быть присвоены к чему-либо, и не должны быть указаны с левой стороны от оператора присваивания.



Т.е. следующее выражение будет корректным:



x = 20.0



Тогда как следующее вызовет ошибку компилятора:





10 = 20



#junior



@golang_interview