Отсутствует.Он не скомпилируется, потому что ни 'foo'
, ни 'bar'
не является одним символом.Но скажем, вы использовали вместо двойных кавычек.
В Golang аргументы передаются по значению (они копируются на новое место в памяти - стек или куча), и не имеет значения, является ли это частным или общедоступным методом или произвольной функцией.Новый экземпляр изменен.Результат вашего примера будет "foo"
.
. Чтобы изменить переменную, лежащую вне функции, вы должны явно передать указатель, указывающий на такую переменную.
func modify(s *string) {
*s = "bar"
}
...
var a = "foo"
modify(&a)
println(a) // will print "bar"
Inсам указатель этого случая передается по значениям (он копируется), но его значение (адрес a
) по-прежнему указывает на ту же переменную.Таким образом, a
можно изменить с помощью указателя.