SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Язык программирования 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
elena@grahovac.me
+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 = %qn", 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
Вопросы: elena@grahovac.me
Этот доклад и примеры кода
Елена Граховац
05.02.2017

Mais conteúdo relacionado

Mais procurados

Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Yandex
 
Михаил Коробов: Как перейти на Python 3
Михаил Коробов: Как перейти на Python 3Михаил Коробов: Как перейти на Python 3
Михаил Коробов: Как перейти на Python 3
it-people
 
Илья Ковалевский "Что такое Qt и что с ним можно сделать"
Илья Ковалевский "Что такое Qt и что с ним можно сделать"Илья Ковалевский "Что такое Qt и что с ним можно сделать"
Илья Ковалевский "Что такое Qt и что с ним можно сделать"
Dmitry Savchenko
 
что такое Git и как с ним бороться
что такое Git и как с ним боротьсячто такое Git и как с ним бороться
что такое Git и как с ним бороться
Владимир Кожаев
 
Владимир Варанкин — «БЭМ: практика»
Владимир Варанкин — «БЭМ: практика»Владимир Варанкин — «БЭМ: практика»
Владимир Варанкин — «БЭМ: практика»
Yandex
 
Git для новичков
Git для новичковGit для новичков
Git для новичков
Softline
 
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
Nikolay Samokhvalov
 
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
AvitoTech
 
Отладка в Python: 2016 edition
Отладка в Python: 2016 editionОтладка в Python: 2016 edition
Отладка в Python: 2016 edition
Кирилл Борисов
 

Mais procurados (20)

Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует Go
 
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
 
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
 
BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демонов
 
Как мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.RuКак мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.Ru
 
Rust - GDG DevFest 2016 Nizhny Novgorod
Rust - GDG DevFest 2016 Nizhny NovgorodRust - GDG DevFest 2016 Nizhny Novgorod
Rust - GDG DevFest 2016 Nizhny Novgorod
 
Михаил Коробов: Как перейти на Python 3
Михаил Коробов: Как перейти на Python 3Михаил Коробов: Как перейти на Python 3
Михаил Коробов: Как перейти на Python 3
 
Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)
 
Use Grunt Luke
Use Grunt LukeUse Grunt Luke
Use Grunt Luke
 
Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019
Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019
Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019
 
Данил Ильиных и Владимир Иванов, «Велогосипед»
Данил Ильиных и Владимир Иванов, «Велогосипед»Данил Ильиных и Владимир Иванов, «Велогосипед»
Данил Ильиных и Владимир Иванов, «Велогосипед»
 
Разработка декстопных приложений для linux (Владимир Яковлев)
Разработка декстопных приложений для linux (Владимир Яковлев)Разработка декстопных приложений для linux (Владимир Яковлев)
Разработка декстопных приложений для linux (Владимир Яковлев)
 
Илья Ковалевский "Что такое Qt и что с ним можно сделать"
Илья Ковалевский "Что такое Qt и что с ним можно сделать"Илья Ковалевский "Что такое Qt и что с ним можно сделать"
Илья Ковалевский "Что такое Qt и что с ним можно сделать"
 
что такое Git и как с ним бороться
что такое Git и как с ним боротьсячто такое Git и как с ним бороться
что такое Git и как с ним бороться
 
Владимир Варанкин — «БЭМ: практика»
Владимир Варанкин — «БЭМ: практика»Владимир Варанкин — «БЭМ: практика»
Владимир Варанкин — «БЭМ: практика»
 
Git для новичков
Git для новичковGit для новичков
Git для новичков
 
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
 
Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)
 
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
 
Отладка в Python: 2016 edition
Отладка в Python: 2016 editionОтладка в Python: 2016 edition
Отладка в Python: 2016 edition
 

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

Стажировка-2013, разработчики, ретроспектива
Стажировка-2013, разработчики, ретроспективаСтажировка-2013, разработчики, ретроспектива
Стажировка-2013, разработчики, ретроспектива
7bits
 
Интернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятияИнтернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятия
nomoretears
 
Компонент-платформа / Александр Лобашев (Avito)
Компонент-платформа / Александр Лобашев (Avito) Компонент-платформа / Александр Лобашев (Avito)
Компонент-платформа / Александр Лобашев (Avito)
Ontico
 
Расширь границы возможного вместе с Gradle
Расширь границы возможного вместе с GradleРасширь границы возможного вместе с Gradle
Расширь границы возможного вместе с Gradle
Aleksandr Tarasov
 

Semelhante a Введение в язык программирования Go (20)

SECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open SourceSECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open Source
 
Yarfrontend #2. Useful services
Yarfrontend #2. Useful servicesYarfrontend #2. Useful services
Yarfrontend #2. Useful services
 
Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»
Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»
Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
 
Dapper + QueryObject
Dapper + QueryObjectDapper + QueryObject
Dapper + QueryObject
 
Язык программирования GO
Язык программирования GOЯзык программирования GO
Язык программирования GO
 
Стажировка-2013, разработчики, ретроспектива
Стажировка-2013, разработчики, ретроспективаСтажировка-2013, разработчики, ретроспектива
Стажировка-2013, разработчики, ретроспектива
 
Актуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработкеАктуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработке
 
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
Как использовать JupyterHub на 100% на примере ML-школы DataGym и компании La...
 
Desktop-like Games. How and why?
Desktop-like Games. How and why?Desktop-like Games. How and why?
Desktop-like Games. How and why?
 
Интернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятияИнтернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятия
 
Design Platform FrontendConf
Design Platform FrontendConfDesign Platform FrontendConf
Design Platform FrontendConf
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест Джоэла
 
Антон Тюрин — Облачная платформа Cocaine — облако своими руками
Антон Тюрин — Облачная платформа Cocaine — облако своими рукамиАнтон Тюрин — Облачная платформа Cocaine — облако своими руками
Антон Тюрин — Облачная платформа Cocaine — облако своими руками
 
Google services in education
Google services in educationGoogle services in education
Google services in education
 
Компонент-платформа / Александр Лобашев (Avito)
Компонент-платформа / Александр Лобашев (Avito) Компонент-платформа / Александр Лобашев (Avito)
Компонент-платформа / Александр Лобашев (Avito)
 
Использование сервисов Google
Использование сервисов GoogleИспользование сервисов Google
Использование сервисов Google
 
Интеграция и синхронизация облачных хранилищ
Интеграция и синхронизация облачных хранилищИнтеграция и синхронизация облачных хранилищ
Интеграция и синхронизация облачных хранилищ
 
Размещение проектов на drupal.org
Размещение проектов на drupal.orgРазмещение проектов на drupal.org
Размещение проектов на drupal.org
 
Расширь границы возможного вместе с Gradle
Расширь границы возможного вместе с GradleРасширь границы возможного вместе с Gradle
Расширь границы возможного вместе с Gradle
 

Mais de Elena Grahovac

Микросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опытаМикросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опыта
Elena Grahovac
 

Mais de Elena Grahovac (7)

Go at Openprovider
Go at OpenproviderGo at Openprovider
Go at Openprovider
 
Пословицы дядюшки Пайка
Пословицы дядюшки ПайкаПословицы дядюшки Пайка
Пословицы дядюшки Пайка
 
Пользовательские истории
Пользовательские историиПользовательские истории
Пользовательские истории
 
Про Git
Про GitПро Git
Про Git
 
Микросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опытаМикросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опыта
 
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing ProtocolВзаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
 
Введение в сервис-ориентированную архитектуру
Введение в сервис-ориентированную архитектуруВведение в сервис-ориентированную архитектуру
Введение в сервис-ориентированную архитектуру
 

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