Имя и значение – Go vs Python
В python с кодом ниже,
x = 3 x='str'
позволяет x
сначала указывать на объект типа int
а затем на объект типа str
, поскольку питон динамически типизирован . type(x)
дает тип значения ( 3
или str
), но не тип имени x
.
Фактически, x
не сохраняет значение 3
а указывает на объект типа int
, значение которого равно 3
В языке GO с синтаксисом ниже,
func main() { y := 2 fmt.Println(reflect.TypeOf(y)) // gives 'int' y = "str" // Compile time error, because GO is static typed }
Вопрос:
Is int
, тип имени y
или тип значения 2
?
- Рекомендации Google App Engine – Go vs. Python?
- Как сделать простое наследование в Go
- Go – Каков эквивалент «прохода» Python?
- Использование ресурсов google Go vs Python и Java на Appengine
- Эквивалент utils.execute () python в golang
Переменные Python привязаны к экземплярам классов, которые динамически назначаются им в ходе программы. Поэтому, и особенно с изменяемыми объектами, они являются просто указателями, которые содержат информацию об их местоположении данных и типе данных, на которые они указывают. Вот почему, назначив новое значение, вы создаете новый экземпляр (который является вашим основным интересом) и привязываем к нему имя переменной, поэтому тип связан со значением , а не с самой переменной.
>>> x = 3; id(x) 1996006560 >>> x = 'str'; id(x) 1732654458784
Переменные Go, с другой стороны, служат (когда не указатели) в качестве местоположений памяти оплотов, поскольку язык компилируется, а переменные получают постоянное «задание» для хранения определенного типа информации (что также может быть указателем). Следовательно, переменная почти наверняка сохранит свою память вдоль программы, будет иметь постоянные свойства типа данных, и вы могли бы сказать, что сама переменная имеет определенный тип (а не тип полу-указателя).
package main import . "fmt" func main () { x := "str"; Println(&x) // 0xc04203a1c0 x = "Hello world!"; Println(&x) // 0xc04203a1c0 }
- Почему моя программа Go работает намного хуже, чем ожидалось, в следующем сценарии?
- Возьмем строку JSON, развязав ее в интерфейс на карте , редактируем и маршализируем ее в байт, кажется более сложным, тогда это должно быть
- Изучите Go or Improve My Python / Ruby Knowledge
- каковы преимущества стоимости / производительности использования «golang» в GAE
- Вызов функции Python из Go и получение возвращаемого значения функции
- Смешивание Python и Go
- Может ли Golang умножить строки, подобные Python?
- Питон-эквивалент выбора Голанга на каналах
- Эквивалент setdefault в Go?