Введение в язык программирования Go
-
Upload
elena-grahovac -
Category
Engineering
-
view
121 -
download
4
Transcript of Введение в язык программирования Go
Язык программирования Go
05.02.2017
Важное объявление :)Практическая часть занятия состоится в воскресенье 12 февраля в 12.00 в бизнес-инкубаторе Технопарка, ул. Николаева, 11.
По желанию можно принести с собой ноутбук с установленным Go и прямо на воркшопе попробовать себя
в разработке веб-сервисов. Любые вопросы по воркшопу можно адресовать в Sunday
Go School: https://vk.com/sunday_go_school или по телефону +7 913 768 4381 (Елена).
3
golangshow.com
openprovider.nl
Елена Граховац
twitter.com/webdeva
github.com/rumyantseva vk.com/grahovac
[email protected] +7 913 768 43 81
podcast co-host
backend web developer
План
4
- Что представляет собой Go - Для чего можно использовать Go - История появления - С чего начать новичку - Ресурсы для “продвинутых” - Сообщество - Практика: пишем веб-сервис - Практика: упаковываем сервис в докер-
контейнер
Go
5
golang.org
- компилируемый - многопоточный - статическая типизация - открытый исходный код - простой и понятный синтаксис
- отлично подходит для облачных веб-сервисов
- сильное и дружелюбное коммьюнити
Для чего подходит Go
6
- Инструменты и системы, позволяющие сделать разработку и эксплуатацию сервисов и приложений более эффективной
Инфраструктура
Для чего подходит Go
7
- Отлично вписывается в REST-подход - Идеально для реализации серверной части API - Быстрая и эффективная реализация
микросервисов
Web Service Backend
Для чего подходит Go
8
- Бинарный файл, содержащий в себе все необходимые библиотеки
- Кросс-компиляция под популярные платформы
Инструменты командной строкии Интернет вещей
Для чего подходит Go
9
- Data Science - Мобильные платформы - …
Другие эксперименты
Кто пишет на Go
10
https://github.com/golang/go/wiki/GoUsers
История
11
- Google - начало работы: сентябрь 2007 - первый релиз: ноябрь 2009
- Робер Грисемер (Robert Griesemer) - Роб Пайк (Rob Pike) - Кен Томпсон (Ken Thompson)
Текущее состояние
12
- Стабильная версия: Go 1.7.5 - Готовится к релизу в этом месяце: Go 1.8
Release parties
13
https://github.com/golang/go/wiki/
Go-1.8-Release-Party
С чего начать новичку?
14
- Официальная документация - Вики на Github’е - Песочница - Тур в Go - Блог Гоферакадемии
Сообщество
15
- Международный форум - Международный Slack - Русскоязычный Slack - Go Bridge - Women Who Go
Встречи в Новосибирске
16
telegram.me/GDGNsk
meetup.com/GolangNSK
Больше ресурсов!
17
- Golang News - Golang Weekly - Go Time - Golang Show - 4gophers.ru
Практика: пишем сервер
18
package main
import ( "fmt" "log" "net/http" )
func main() { http.HandleFunc("/", handler) // each request calls handler log.Fatal(http.ListenAndServe("localhost:8000", nil)) }
// handler echoes the Path component of the requested URL. func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path) }
Из книги «The Go Programming Language», https://github.com/adonovan/gopl.io/blob/master/ch1/server1/main.go
Практика: пишем сервер
19
- Запускаем приложение: go run server.go
- Делаем запрос curl’ом: curl -X GET http://127.0.0.1:8000
Практика: добавляем роутер
20
import ( "fmt" "net/http" "github.com/julienschmidt/httprouter") func main() { router := httprouter.New() router.POST("/api/v1/users", createUser) router.GET("/api/v1/users/:id", findUserByID) http.ListenAndServe(":8000", router)}
…
Практика: идем дальше
21
- Выносим хэндлеры в отдельный пакет - Добавляем немного логики
Кросс-компиляция
22
- Список поддерживаемых ОС и архитектур
env GOOS=linux GOARCH=amd64 go build server.go
Слайды: https://goo.gl/Ld687V
Код: https://goo.gl/KKTXYa
Вопросы: [email protected]
Этот доклад и примеры кода
Елена Граховац 05.02.2017