Вобще язык поражает своей… Не знаю как это назвать. Неконсистенстностью?
Можно определить в модуле неэкспортируемый тип? Можно. И пользоваться этим типом снаружи не получится.
Но зато из этого модуля можно вернуть значение этого типа. Его можно присвоить переменной. И даже пользоватся этой переменной (методы там вызывать).
Но передать эту пременную в свою функцию — нельзя. Потому что нельзя описать параметр (тип-то не экспортируемый). А если параметр описать как interface{} — то передать можно, но толком пользоваться — нельзя. У interface{} нет методов, например. Хотя, я подозреваю, через reflect можно дотянуться и до методов, но это уде совсем через жопу.
Можно в функцию передать переменное число параметров? Можно.
Можно из функции вернуть несколько значений? Можно.
Можно сделать вложенный вызов, так, что-бы возвращенные значения ушли напрямую в функцию с переменным числом параметров? Можно, но только если не будет дополнительных параметров.
Зачем было делать возможность возвращать несколько значений? А вот что-б не как Цэ, что-б функция могла вернуть значение и флаг успешности.
О! Наверное можно написать err, a, b, c, d: := fmt.Scanf(«%d %d %d %d») ? Неее. Нельзя. У функции может быть несколько возвращаемых значений, но не может быть переменное число возвращаемых значений.
Классы есть? Ну… Есть структуры с методами. Но конструкторов и деструкторов — нет. Так что если что, то ручками вызывай, не обломишься.
Лёгкие сопроцессы есть? Есть. Но методов контроля за ними — никаких.
А, вот еще прикол:
loop:
for {
break loop
}
Называется — догадайся куда мы выйдем после break.
Originally published at U.F.M's Homepage. You can comment here or there.
(no subject)
Date: 2014-04-22 10:26 (UTC)(no subject)
Date: 2014-04-22 11:05 (UTC)Больше напрягает что вернуть несколько значений можно, но вот пользоваться ими несколько напряжно.
Сделали бы вместо этого возможность "разбирать" слайс/массив поэлементно множественным присваиванием - было-бы значительно логичнее.
(no subject)
Date: 2014-04-22 11:07 (UTC)(no subject)
Date: 2014-04-22 11:32 (UTC)(no subject)
Date: 2014-04-22 12:00 (UTC)