• В Go – динамическая типизация?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Go использует так называемую структурную типизацию (калька со structural typing).
    Также Go использует индентичность типов https://golang.org/ref/spec#Type_identity т.е. проверяются типы.

    Вот иллюстрация работы типов в Go:
    5a4c2680cc679404929431.png
    Ответ написан
    1 комментарий
  • В Go – динамическая типизация?

    longclaps
    @longclaps
    Смотри, переменная - это то, к чему можно обратиться по имени.
    var x string - это переменная с именем x
    А что такое len(x)? Это - некоторое значение, которое по ходу дела вычисляют.
    Как вычисляют? Да вот вызывая len(x) и вычисляют.
    Где оно находится? Нигде, его лишь можно передать куда-то для сохранения или дальнейших вычислений.
    Как его можно сохранить? Присвоив какой-то переменной, например sz := len(x).
    Но в этот момент эта переменная начинает жить своей жизнью и больше уже не зависит от строки x, которую можно поменять.
    Вычисляя выражения, ты можешь делать что угодно, в том числе преобразование типов, как в твоём вопросе.
    Это безопасно, ведь выражение - вот оно, прямо перед тобой записано, всё наглядно.
    Присваивая значение переменой, ты можешь - ... ну тут в разных языках по-разному.
    В языках с динамической типизацией ты можешь присвоить ей зачение любого типа - и в этом есть опасность. Ты можешь просто не видеть или не знать, что где-то в другом куске кода кто-то что-то туда запихнул. Статическая типизация от этого защищает.
    Вообще-то и в языке со статической типизацией есть подобная опасность - где-то кто-то запихнул в переменную значение правильного типа, но невалидное, например ноль в знаменатель дроби. Поэтому изобретены языки, которые обходятся без переменных, одними лишь выражениями. Но это - уже другая история.
    Ответ написан
    Комментировать
  • Как исправить evaluated but not used в Go?

    if i%3 == 0; i%5 == 0 {
    Точка с запятой внутри блока if просто разделяет инструкции, выполняющиеся по порядку.
    Скорее всего, вы хотели сделать так:
    if i%3 == 0 && i%5 == 0 {

    Но я бы ваш кусок упростил вот так:
    if i%3 == 0 {
    	fmt.Print(i, "Fizz")
    }
    if i%5 == 0 {
    	fmt.Print(i, "Buzz")
    }
    fmt.Println("")
    i++
    Ответ написан
    Комментировать
  • Как исправить evaluated but not used в Go?

    Sly_tom_cat
    @Sly_tom_cat
    .
    package main
    
    import "fmt"
    
    func main() {
    	for i := 1; i < 101; i++ {
    
    		if i%3 == 0 || i%5 == 0 {
    			if i%3 == 0 {
    				fmt.Print("Fizz")
    			}
    			if i%5 == 0 {
    				fmt.Print("Buzz")
    			}
    			fmt.Println()
    		} else {
    			fmt.Println(i)
    		}
    	}
    }


    ЗЫ и пользуйтесь нормальными отступами или gofmt, а то ваш код просто глаз режет.
    Ответ написан
    2 комментария
  • Где найти правила публикации поста в GT/ХХ, если я уже с полноценным аккаунтом?

    pragmatik
    @pragmatik Куратор тега Хабр
    К сожалению, указанная страница доступна лишь начинающим участникам сообщества. Под спойлером ниже приведена актуальная на данный момент
    копия текста напоминания правил для авторов
    Минуточку внимания. Прежде чем разместить публикацию, необходимо еще раз ознакомиться с правилами сайта и отметить галочку рядом с каждым пунктом. Мы хотим быть уверены, что вы действительно всё прочитали.

    Хабрахабр — не место для копипастеров. Размещение полностью скопированного контента с других сайтов запрещено — даже при использовании гиперссылки на источник. Мы за авторские материалы.
    Хабрахабр — не ЖЖ и не центр мирового кросспостинга. Не нужно копировать публикации из других блогов и сайтов, указывая, что ранее они были опубликованы в другом месте.
    Хабрахабр — не магазин. Рекламировать товары, услуги, события, аккаунты и прочее, размещать в своих публикациях ссылку на свой блог/сайт можно только в двух случаях: если публикация находится в хабе «Я пиарюсь», либо в корпоративном блоге. Также не разрешается размещать рекламу в профиле. И не стоит злоупотреблять возможностями «Я пиарюсь». Помните — все хорошо в меру.
    Хабрахабр — не для односложных публикаций. Мы тоже любим смешные комиксы, весёлые фотожабы и угарные видеоролики. Но мы просматриваем их на других сайтах, потому что они для этого и предназначены, а Хабрахабр — нет. Всевозможные «прикольные ссылки» без развёрнутого комментария тоже лучше оставить за бортом.
    Хабрахабр — не для политики. На сайте крайне не приветствуются дискуссии на политические темы в любом их проявлении.
    Хабрахабр — не жалобная книга. Наша жизнь полна несправедливостей, но это вовсе не означает, что о каждой трагедии и драме нужно рассказывать IT-сообществу. Как правило, в таких статьях одна ругань, разборки и выяснение отношений с переходом на личности и публикацией личной переписки. Мы категорически против такого на Хабрахабре, поэтому, пожалуйста, воздержитесь от жалобных публикаций, а если кто-то обманул или ограбил, обращайтесь в полицию.
    Хабрахабр — для грамотных людей. Мы любим русский язык и не любим тех, кто его коверкает. Ошибки и опечатки бывают у всех — старайтесь проверять текст перед отправкой. Постоянные орфографические ошибки и игнорирование правил пунктуации не приветствуются, равно как намеренное коверканье слов, «падонкоффский сленг» и прочие смайлики.
    Хабрахабр — для спокойных людей. Всегда будет кто-то, кто, по вашему мнению, ни разу не прав. Однако просим оставить хамство, грубость, переходы на личности и прочие проявления агрессии и неадекватности для других ресурсов — на Хабрахабре это не в почёте. Пользуйтесь словарём синонимов - за мат и эвфемизмы НЛО забирает туда, где не светит солнце.
    Хабрахабр — не для попрошаек. Карма и рейтинг зарабатываются на Хабрахабре только честным способом, то есть своими публикациями и комментариями. Не стоит размещать чужие публикации, выпрашивать приглашения или карму, устраивать «аттракционы невиданной щедрости», «публикации добра» (или зла) и публиковать призывы поднять друг другу карму по любому поводу. Для сбора средств Хабрахабр также не подходит.
    Хабрахабр — не для клонов. НЛО будет блокировать виртуалов, их создателей и тех, кто об этом думает.
    Хабрахабр — не для правонарушителей. Мы долго строили этот уютный ресурс, поэтому будет справедливо, если мы и будем решать, в каком направлении ему дальше развиваться и от каких нарушений вычищать Хабрахабр. Мы стараемся ничего не делать с бухты-барахты, и если мы кого-то забанили, добавили или убрали какую-то функцию — поверьте, значит, так правда будет лучше для всех. Говоря проще — запрещено обсуждать правила сайта и действия администрации, направленные на их соблюдение.
    Я понимаю, что за нарушение этих правил на сайте ко мне могут быть применены санкции.
    Ответ написан
    Комментировать