Всем привет! Хочу поделиться первым опытом программирования на языке Go.
Cвою дорогу в программирование я начал как frontend разработчик. Далее перешёл на backend на Python и, немного для себя, на C# Asp.Net MVC. Но вот недавно, пару месяцев назад, я познакомился с этим прекрасным языком Go.
Почему Go?
1 — компилируемый язык.
2 — очень необычный язык.
Структуры, интерфейсы… пришлось ломать свой мозг, переучиваться. И первые проблемы, кончено, это именно переучиваться. Где классы? Где ООП? Где любимые паттерны?
Но немного поломав голову, язык Go мне раскрылся и я его полюбил. Ну и, конечно, первым делом решил написать свой первый «велосипед», а именно web framework под названием MGGO.
Что я хотел и к чему стремился
Конечно сразу хотелось сделать MVC framework наподобие Asp.Net. Но это оказалось не так просто, потому что язык Go своеобразный. Но вот что получилось:
Контроллеры (controller)
Контроллер это структура, в котором методы могут быть как внешние(api) так и только внутренние, а также, которые отвечают за представление(view).
Сразу на примере рассмотрим контроллер новостей.
import mggo
type News struct{
ID int
Title string
Text string
}
func NewNews() *NewNews{
return &NewNews{}
}
func init() {
// регистрируем контроллер
mggo.RegisterController("news", NewNews)
}
func(n *News) Read(ctx *mggo.BaseContext) News{
return News{1, "First News", "Text first News"}
}
func(n *News) IndexView(ctx *mggo.BaseContext, data *mggo.ViewData, path []string){
data.View = "news/news.html"
data.Data["News"]
data.Data["News"] = n.Read()
}