Pull to refresh

Comments 22

Так я с неё и начинал.
А вообще, я даже больше скажу, есть перевод (с дополнениями) этой статьи habrahabr.ru/post/122095/
Но там, например, нет примера по загрузке файла на сервер (а найти его было сложно, а по докам непонятно), да и примеры там слишком уж мудреные. Лично я, когда я только начал, несколько дней перечитывал эту статью и мучил людей на #go-nuts, прежде чем понял что по чем.
> t, _ := template.ParseFiles(“index.html”)

Тут стоит или проверить ошибку, или использовать template.Must. Еще стоило бы упомянуть mux, наверно, он крайне полезен.
Я в самом начале статьи написал о том, что я не буду проверять ошибки, чтобы уменьшить количество кода в статье. Если бы я проверял каждую функцию (а в своих программах я это делаю), то было бы слишком много однотипного текста, вроде:
if err != nil {
	log.Println(err)
	return
}

Там-же я написал про сторонние пакеты.

Что по поводу template.Must, в моих программах я не использую os.Exit(), os.Panic(), а только return, в противном случае не сработает defer и многие открытые потоки не закроются корректно.
При смерти приложения ОС почистит за вас ресурсы, которых в примере толком и нет. А Must не требует полновесной проверки ошибок.
Ладно, не будет разводить дискуссию, скажу только, что чисто гипотетически, OS может и не почистить, файлы все-равно запишутся с ошибкой (flush/sync могут не сработать), и я предпочитаю те куски кода которые можно написать одинакового, так и писать. Зачем разводить в одном месте log.Fatal, в другом template.Must и т.д.?
А есть какой-нибудь MVC-фреймворк для Go? Вроде django что-нибудь?
Поищите в интернете по подобному запросу: «go language mvc», найдете еще несколько.
Наиболее популярные фреймворки — это Revel и Beego. Ничего типа Django и Rails под Go нет и вряд ли будет.
Каждой задаче — свой инструмент. Go и не предназначался для full stack веб приложений. Он прекрасно подходит для веб-сервисов или консольных утилиток. Во всяком случае такое мнение витает в сообществе.

Полнофункциональный веб сайт прекрасно пишется на Rails/Django/etc, а бэкенды к нему на всяких Erlang/Go/etc.
Я думаю, это вопрос восприятия. И слабого продвижения Го со стороны Гугла (не факт, что они сами на нем много пишут, как бы вообще не свернули). На Го вроде много разного и пишут, но ничего серьезного я пока не видел. Больше модули, утилиты и все такое.

Про разработку сайтов на python я лично узнал на примере Джанги, а на Руби именно с использованием rails. Альтернативы, конечно есть, но эти 2 являются основными для этих языков. Вероятно, именно появление чего-то подобного для Го и хорошее средство для написания именно сайтов основной массе программистов. Сам язык является отличным компромисом между python/ruby и С. Но еще не набрал ту критическую массу популярности, чтобы на него начали портировать крупные фреймворки.

Конечно, большинству программистов сайтов такой язык не нужен. Для них он будет слишком сложным из-за типизации и памяти, а максимальная скорость и дешевая многопоточность вроде как и не нужна. Дорога ему в крупные компании с очень высоконагруженными сайтами, где он, возможно, потеснит python и С (один язык для всего это тоже, кстати, плюс). Этим корпорациям, конечно, никакие аналоги Джанги не нужны, но став популярным там, он начнет приживаться и в компаниях поменьше и тогда, возможно, кто-то из них и оформит свои наработки в виде полноценного фреймворка.

Но это вопрос пока спорный, сейчас Го еще нужно отлаживать и отлаживать. Большинство моих запросов у Гуглу по поводу ошибок ведут на форумы с долгими разбирательствами и предложением запостить багрепорт, а не решениями. И с качеством модулей пока беда и много альтернатив, которые делают одно и тоже но с разным количеством косяков, прям phpclasses какой-то. Надеюсь, со временем будет что-то типа CPAN, куда будут включаться только проверенные, работающие и полнофункциональные модули без дублей.
//и переменные обязательно должны быть глобальными!

Не глобальными, а публичными.
Спасибо за указание на ошибку.
P.S. Пишите такое личным сообщением, а то я исправлю и ваш пост будет бессмысленным.
Тогда уж не публичными, а экспортируемыми ;)
Вы могли бы использовать вот эту простую библиотеку github.com/hoisie/web
в ней очень мало всего скрыто и используются почти прямые вызов в стандартную библиотеку. Как минимум можно было бы на неё посмотреть.

В целом статья интересная для начинающих.
В Go есть достаточно всего (опять-же лично для меня и моих задач), а смысл в этом пакете я вижу только в более простой работе с cookie.
Я правильно понимаю, что по данному тесту _http://forum.dlang.org/thread/jzsvmdtfwjutqtnrcrdh@forum.dlang.org#post-mailman.247.1386169361.3242.digitalmars-d:40puremagic.com

D + Vibed со значительным отрывом обходит Go?

Sign up to leave a comment.

Articles