Введение в язык программирования Go
-
Upload
elena-grahovac -
Category
Engineering
-
view
117 -
download
4
Transcript of Введение в язык программирования Go
![Page 1: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/1.jpg)
Язык программирования Go
05.02.2017
![Page 2: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/2.jpg)
Важное объявление :)Практическая часть занятия состоится в воскресенье 12 февраля в 12.00 в бизнес-инкубаторе Технопарка, ул. Николаева, 11.
По желанию можно принести с собой ноутбук с установленным Go и прямо на воркшопе попробовать себя
в разработке веб-сервисов. Любые вопросы по воркшопу можно адресовать в Sunday
Go School: https://vk.com/sunday_go_school или по телефону +7 913 768 4381 (Елена).
![Page 3: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/3.jpg)
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
![Page 4: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/4.jpg)
План
4
- Что представляет собой Go - Для чего можно использовать Go - История появления - С чего начать новичку - Ресурсы для “продвинутых” - Сообщество - Практика: пишем веб-сервис - Практика: упаковываем сервис в докер-
контейнер
![Page 5: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/5.jpg)
Go
5
golang.org
- компилируемый - многопоточный - статическая типизация - открытый исходный код - простой и понятный синтаксис
- отлично подходит для облачных веб-сервисов
- сильное и дружелюбное коммьюнити
![Page 6: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/6.jpg)
Для чего подходит Go
6
- Инструменты и системы, позволяющие сделать разработку и эксплуатацию сервисов и приложений более эффективной
Инфраструктура
![Page 7: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/7.jpg)
Для чего подходит Go
7
- Отлично вписывается в REST-подход - Идеально для реализации серверной части API - Быстрая и эффективная реализация
микросервисов
Web Service Backend
![Page 8: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/8.jpg)
Для чего подходит Go
8
- Бинарный файл, содержащий в себе все необходимые библиотеки
- Кросс-компиляция под популярные платформы
Инструменты командной строкии Интернет вещей
![Page 9: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/9.jpg)
Для чего подходит Go
9
- Data Science - Мобильные платформы - …
Другие эксперименты
![Page 10: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/10.jpg)
Кто пишет на Go
10
https://github.com/golang/go/wiki/GoUsers
![Page 11: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/11.jpg)
История
11
- Google - начало работы: сентябрь 2007 - первый релиз: ноябрь 2009
- Робер Грисемер (Robert Griesemer) - Роб Пайк (Rob Pike) - Кен Томпсон (Ken Thompson)
![Page 12: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/12.jpg)
Текущее состояние
12
- Стабильная версия: Go 1.7.5 - Готовится к релизу в этом месяце: Go 1.8
![Page 13: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/13.jpg)
Release parties
13
https://github.com/golang/go/wiki/
Go-1.8-Release-Party
![Page 14: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/14.jpg)
С чего начать новичку?
14
- Официальная документация - Вики на Github’е - Песочница - Тур в Go - Блог Гоферакадемии
![Page 15: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/15.jpg)
Сообщество
15
- Международный форум - Международный Slack - Русскоязычный Slack - Go Bridge - Women Who Go
![Page 16: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/16.jpg)
Встречи в Новосибирске
16
telegram.me/GDGNsk
meetup.com/GolangNSK
![Page 17: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/17.jpg)
Больше ресурсов!
17
- Golang News - Golang Weekly - Go Time - Golang Show - 4gophers.ru
![Page 18: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/18.jpg)
Практика: пишем сервер
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
![Page 19: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/19.jpg)
Практика: пишем сервер
19
- Запускаем приложение: go run server.go
- Делаем запрос curl’ом: curl -X GET http://127.0.0.1:8000
![Page 20: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/20.jpg)
Практика: добавляем роутер
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)}
…
![Page 21: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/21.jpg)
Практика: идем дальше
21
- Выносим хэндлеры в отдельный пакет - Добавляем немного логики
![Page 22: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/22.jpg)
Кросс-компиляция
22
- Список поддерживаемых ОС и архитектур
env GOOS=linux GOARCH=amd64 go build server.go
![Page 23: Введение в язык программирования Go](https://reader031.fdocument.pub/reader031/viewer/2022020723/58eddbdc1a28ab7b2d8b45e7/html5/thumbnails/23.jpg)
Слайды: https://goo.gl/Ld687V
Код: https://goo.gl/KKTXYa
Вопросы: [email protected]
Этот доклад и примеры кода
Елена Граховац 05.02.2017