23
Язык программирования Go 05.02.2017

Введение в язык программирования Go

Embed Size (px)

Citation preview

Page 1: Введение в язык программирования Go

Язык программирования Go

05.02.2017

Page 2: Введение в язык программирования Go

Важное объявление :)Практическая часть занятия состоится в воскресенье 12 февраля в 12.00 в бизнес-инкубаторе Технопарка, ул. Николаева, 11.

По желанию можно принести с собой ноутбук с установленным Go и прямо на воркшопе попробовать себя

в разработке веб-сервисов. Любые вопросы по воркшопу можно адресовать в Sunday

Go School: https://vk.com/sunday_go_school или по телефону +7 913 768 4381 (Елена).

Page 3: Введение в язык программирования Go

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

План

4

- Что представляет собой Go - Для чего можно использовать Go - История появления - С чего начать новичку - Ресурсы для “продвинутых” - Сообщество - Практика: пишем веб-сервис - Практика: упаковываем сервис в докер-

контейнер

Page 5: Введение в язык программирования Go

Go

5

golang.org

- компилируемый - многопоточный - статическая типизация - открытый исходный код - простой и понятный синтаксис

- отлично подходит для облачных веб-сервисов

- сильное и дружелюбное коммьюнити

Page 6: Введение в язык программирования Go

Для чего подходит Go

6

- Инструменты и системы, позволяющие сделать разработку и эксплуатацию сервисов и приложений более эффективной

Инфраструктура

Page 7: Введение в язык программирования Go

Для чего подходит Go

7

- Отлично вписывается в REST-подход - Идеально для реализации серверной части API - Быстрая и эффективная реализация

микросервисов

Web Service Backend

Page 8: Введение в язык программирования Go

Для чего подходит Go

8

- Бинарный файл, содержащий в себе все необходимые библиотеки

- Кросс-компиляция под популярные платформы

Инструменты командной строкии Интернет вещей

Page 9: Введение в язык программирования Go

Для чего подходит Go

9

- Data Science - Мобильные платформы - …

Другие эксперименты

Page 10: Введение в язык программирования Go

Кто пишет на Go

10

https://github.com/golang/go/wiki/GoUsers

Page 11: Введение в язык программирования Go

История

11

- Google - начало работы: сентябрь 2007 - первый релиз: ноябрь 2009

- Робер Грисемер (Robert Griesemer) - Роб Пайк (Rob Pike) - Кен Томпсон (Ken Thompson)

Page 12: Введение в язык программирования Go

Текущее состояние

12

- Стабильная версия: Go 1.7.5 - Готовится к релизу в этом месяце: Go 1.8

Page 13: Введение в язык программирования Go

Release parties

13

https://github.com/golang/go/wiki/

Go-1.8-Release-Party

Page 14: Введение в язык программирования Go

С чего начать новичку?

14

- Официальная документация - Вики на Github’е - Песочница - Тур в Go - Блог Гоферакадемии

Page 15: Введение в язык программирования Go

Сообщество

15

- Международный форум - Международный Slack - Русскоязычный Slack - Go Bridge - Women Who Go

Page 16: Введение в язык программирования Go

Встречи в Новосибирске

16

telegram.me/GDGNsk

meetup.com/GolangNSK

Page 17: Введение в язык программирования Go

Больше ресурсов!

17

- Golang News - Golang Weekly - Go Time - Golang Show - 4gophers.ru

Page 18: Введение в язык программирования Go

Практика: пишем сервер

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

Практика: пишем сервер

19

- Запускаем приложение: go run server.go

- Делаем запрос curl’ом: curl -X GET http://127.0.0.1:8000

Page 20: Введение в язык программирования Go

Практика: добавляем роутер

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

Практика: идем дальше

21

- Выносим хэндлеры в отдельный пакет - Добавляем немного логики

Page 22: Введение в язык программирования Go

Кросс-компиляция

22

- Список поддерживаемых ОС и архитектур

env GOOS=linux GOARCH=amd64 go build server.go

Page 23: Введение в язык программирования Go

Слайды: https://goo.gl/Ld687V

Код: https://goo.gl/KKTXYa

Вопросы: [email protected]

Этот доклад и примеры кода

Елена Граховац 05.02.2017