Pull to refresh

Comments 23

Реализация дочернего метода будет переписана реализацией родительского метода

Нет не будет. Просто в функцию будет прокинут указанный получатель Parent. А встроенная структура Child - это всего лишь сахар для переменной "Child" с типом Child. У Parent - свой метод, у Child - свой. Вызывать их нужно по разному.

UFO just landed and posted this here

Похоже я был неправ, спасибо за пояснение. Открыл для себя что-то новое.

UFO just landed and posted this here

"Как определить тип интерфейса?"

package main

import (
	"fmt"
	"reflect"
)

func main() {
	var i interface{}
	i = 5
	fmt.Println(reflect.TypeOf(i).Name())
}

int

Так тоже можно, но это плохой тон. Рефлексию лучше избегать. Одна из причин это сильная просадка производительности.

Есть места, где без нее обойтись, к сожалению. А выше — просто еще один ответ на вопрос.

Минус случайно поставил, извините. :(

у вас в первом примере Parent и Child определы наоборот.
Как это
type Parent {
Child
}

это выходит что Родитель наследует свойства Ребенка, а должно быть наоборот

Я когда прочёл, то решил, что это просто вопрос с подвохом такой. Ну надо понимать, что наследования нет, есть композиция.

Вы совершенно правы, спасибо! Внесу изменения.

Конструкция:
type Car struct {
	Transmission
}
это не наследование, а композиция. И ООП через композицию — не менее мощный механизм, чем ООП через наследование. В частности, на Хабре было несколько статей на тему «композиция vs наследование».
iota — это синтаксический сахар go для объявления числовой последовательности констант. Первая константа задается значением 0.
Либо ошибка, либо плохо сформулировано: iota — это индекс константы в наборе и первая константа имеет индекс 0. Но значения первой и последующих констант определяются выражением, включающим в себя iota, которое совсем не обязано быть равным 0.

Добавлю формулировки про ConstSpec. По практике спрашивали только на понимание того, что iota последовательна и числена. Но раскрыть будет не лишним, спасибо за замечание!

Если количество элементов, которые мы добавляем слайс, не будет превышать len, вернется новый слайс, который ссылается на тот же базовый массив, что и предыдущий слайс.

len - текущая длинна. при добавлении не будет привышена только если ничего не добавляем. но.. это верно для cap.

Вы совершенно правы, описка, спасибо что заметили!

Жирнющий лайк за статью. Очень хороший стиль написания. Если сделаешь оставшиеся части, то это будет лучший гайд по собеседованиям ever.

Какие численные типы есть в go?

Можно так же добавить byte(uint8) если не ошибаюсь

"Какие предельные значения int32 и int64?"

Вопрос убил

Sign up to leave a comment.

Articles