голанг-треде некий Roman хотел, чтобы тебя предъявили, так что ты уж, будь добр, сходи — покажись ) Нужно будет пройти блиц-опрос по кишочкам выделения памяти и GC, и предъявить справку, что ты на других языках память вручную не освобождал, и даже lib1.c в институте не писал, ну или хотя бы крепко забыл )
Да просто объяснить: var v [32]byte p0 := &v p1 := &v[0] Почему p0 и p1 равны и не равны одновременно ;)
В сишке указатель на массив это указатель на первый элемент, это всем известно
Для них не определена операция сравнения, это разные типы. То же самое, что сравнивать float64 и int64
А причем тут C если пример на go? )
func cmp(a, b interface{}) bool { return a == b }
а оно перестало паниковать?
А где тут паника?
причём здесь сравнение интерфейсов? для разных типов завёрнутых в интерфейс тупо будет false
в этом случае сравниваются значения, которые под интерфейсом или сами интерфейсные значения?
сравниваются типы, потом в зависимости от типа выбирается оператора сравнения
https://github.com/golang/go/blob/master/src/cmd/compile/internal/reflectdata/alg.go#L696 https://github.com/golang/go/blob/master/src/runtime/alg.go#L243
Обсуждают сегодня