Pull to refresh

Comments 12

func Merge[T any, U any](first T, second U) {
    fmt.Println(first, second)
}

Иногда Go может сказать: "У тебя слишком много вариантов, я не могу выбрать." Это происходит, когда информации недостаточно для однозначного вывода, или когда ваш код настолько загадочен, что даже умный компилятор в ступоре:

Merge[int, string](42, "The answer is")

А почему компилятор тут не может вывести типы? Тут, кажется, информации более чем достаточно

Без проблем выведет в данном примере.

Это первое, на что я обратил внимание в этой статье. Статья явно не стоит внимания! Пол статьи рассказывается про структуры данных. Назвать статью надо было "Дженерики и структуры данных в Go" или как-то так... Автор, а как же читателю понять может ли он свой тип создать, чтобы он удовлетворял ограничение comparable? Информации - ноль. Зачем эта статья!?

// Swap меняет местами значения двух переменных любого типа.
func Swap[T any](a, b *T) {
    *a, *b = *b, *a
}
    x := 1
    y := 2
    Swap(&x, &y)
    fmt.Println(x, y) // Выведет: 1 2

Почему это выведет "1 2", а не "2 1"? У нас же Swap отработал. В следующем примере со строками тоже самое.

Всё нормально тут выведет: https://go.dev/play/p/MMNrjvhi1zh.

Автор либо невнимательно пишет, либо просто не проверяет что делает его код перед тем как добавить его в статью. Там ещё много подобных косяков.

Это оч. удобно. Одна функция для всех числовых типов.

Вам не нужно писать отдельные функции для каждого типа данных.

Так умиляет, как гошники радуются таким простым вещам, которые в других языках уже кучу лет существуют. Представьте, какая будет радость, когда для `if err != nil` придумают синтаксический сахар.

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

Вероятно, пытаться разобраться в чужом, облепленном в синт. сахаре, коде))

Это материал для песочницы. Уровень низкий

Swap точно меняет местами или в комментариях кода ошибка?

Слайсы могут растягиваться и сжиматься, принимая на себя все, что вы им предложите.

Сжиматься? Не просто создавать новые путем отображения на старый с другой стартовой точкой и длиной?

Sign up to leave a comment.