Ещё недостаток «Гоу»
В отличие от многих языков, в «Гоу» символ решётки не позволяет комментировать строку. В упомянутых языках это сделано не зря. В различных
Сам же язык, встретив первой строкой
В «Гоу» такого нет. Несмотря, что в первой версии появилась команда «go run», позволяющая запускать программы из командной строки, не компилируя их (на самом деле компилируя, но результат не сохраняется), я не могу указать в первой строке «#!/usr/local/bin/go run», «Гоу» меня отругает:
bolk@dhcp-174 ~ $ ./main.go
package :
main.go:1:1: illegal character U+0023 '#'Прискорбно.
葉片風扇沒有

Помните в интернете все с ума сходили по безлопастному вентилятору VES VD 501? Китайцы не дремлют!
610 рублей всего. Вот напись с ценника:
Фантастическая технология и дизайн, не имеющая аналогов! Вентилятор не покрывается пылью! Воздух подаётся охлаждённым! Устройство нетравматично! Вентилятор можно установить напротив себя, при этом будем видно собеседника! Сборка занимает всего полминуты!
Опечатки с ценника я заботливо перенёс. Я себе живо представляю двух китайцев, разговаривающих сквозь этот небольшой (он с ладонь размером) вентилятор и изумляющихся: «посмотри Ляо Дзянь, я тебя вижу, не то что через этот старый лопастной вентилятор!».
Декларация-вызов в JS
Сегодня на первой части семинара Ильи Кантора по JS присутствовал (к сожалению, на второй части не получится, буду в Москве это время). Немного поговорили о частом паттерне «объявили функцию и тут же вызвали». Используется этот приём (если кто не знаком с ДжаваСкриптом) для изоляции — в этом языке функции единственное, что может создавать зоны видимости.
Я вскользь затронул свой любимый способ — описание функции и вызов через восклицательный знак или тильду, вместо оборачивания скобками. Вообще, в JS непосредственный вызов функции сразу по месту определения возможен, только если декларация находится в контексте выражения. Для этого и нужны традиционные скобки:
(function () {
// скобки вокруг функции говорят интерпретатору, что это выражение
})();Вообще говоря, можно использовать любые средства, чтобы декларация стала частью выражения. Например, можно
Использование тильды или восклицательного знака гораздо лучше скобок по трём причинам:
!function () {
//
}();И,
var a = 5
(function() {})()Причём ошибку, которую найти иногда довольно трудно, да и сообщение о ней не самое дружественное: «TypeError: 5 is not a function». На самом деле, тут пропущена точка с запятой. Интерпретатор считает, что ему встретились две части выражения, между которыми пропущен
Обычно для этого добавляют точку с запятой сразу перед такими блоками.
Но если использовать унарный оператор, то этой проблемы просто нет (поэтому, на самом деле, мы экономим два байта, ещё и точка с запятой не обязательна):
var a = 5
!function () {}()Тут интерпретатор, встретив унарный оператор, понимает, что предыдущее выражение закончилось и началась новая конструкция.