Submit Search
Go conference 2017 Lightning talk
0 likes
•
1,942 views
M
mokelab
2017年3月25日に開催されたGo conference 2017のLTで発表した資料だよ! context.WithValue()、うまく使ってみようね
Technology
Read more
1 of 26
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
More Related Content
What's hot
(20)
PDF
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda
PDF
An Internal of LINQ to Objects
Yoshifumi Kawai
PDF
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
PDF
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
PDF
LINQ in Unity
Yoshifumi Kawai
PPTX
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
PDF
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Shoot Morii
PDF
Mono is Dead
melpon
PDF
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
Masahiro Wakame
PPTX
Rxに入門しようとしている
onotchi_
PDF
How to Make Own Framework built on OWIN
Yoshifumi Kawai
PDF
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
hecomi
PDF
Async design with Unity3D
Kouji Hosoda
PPTX
UniRx勉強会 reactive extensions inside(公開用)
wilfrem
ODP
Node handson
Makoto Kishimoto
KEY
AFNetworking使ってみた
Taro Matsuzawa
PPTX
async/await のしくみ
信之 岩永
PDF
JavaScript経験者のためのGo言語入門
Shohei Arai
ODP
こんにちはGroovy
irof N
PDF
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
parrotstudio
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda
An Internal of LINQ to Objects
Yoshifumi Kawai
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
LINQ in Unity
Yoshifumi Kawai
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Shoot Morii
Mono is Dead
melpon
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
Masahiro Wakame
Rxに入門しようとしている
onotchi_
How to Make Own Framework built on OWIN
Yoshifumi Kawai
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
hecomi
Async design with Unity3D
Kouji Hosoda
UniRx勉強会 reactive extensions inside(公開用)
wilfrem
Node handson
Makoto Kishimoto
AFNetworking使ってみた
Taro Matsuzawa
async/await のしくみ
信之 岩永
JavaScript経験者のためのGo言語入門
Shohei Arai
こんにちはGroovy
irof N
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
parrotstudio
Viewers also liked
(8)
PDF
Coding in the context era
lestrrat
PDF
My client wanted their apps synced, and I made it with Go
Toru Furukawa
PDF
go 1.8 net/http timeouts
Yahoo!デベロッパーネットワーク
PDF
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Yahoo!デベロッパーネットワーク
PDF
Goをカンストさせる話
Moriyoshi Koizumi
PDF
20171105 go con2017_lt
Keigo Suda
PPTX
Gocon2017:Goのロギング周りの考察
貴仁 大和屋
PDF
GOCON Autumn (Story of our own Monitoring Agent in golang)
Huy Do
Coding in the context era
lestrrat
My client wanted their apps synced, and I made it with Go
Toru Furukawa
go 1.8 net/http timeouts
Yahoo!デベロッパーネットワーク
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Yahoo!デベロッパーネットワーク
Goをカンストさせる話
Moriyoshi Koizumi
20171105 go con2017_lt
Keigo Suda
Gocon2017:Goのロギング周りの考察
貴仁 大和屋
GOCON Autumn (Story of our own Monitoring Agent in golang)
Huy Do
Ad
Similar to Go conference 2017 Lightning talk
(20)
PDF
F#によるFunctional Programming入門
bleis tift
PDF
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
decode2016
PDF
Pfi Seminar 2010 1 7
Preferred Networks
PDF
TypeScript と Visual Studio Code
Akira Inoue
PPTX
10年目の『エブリスタ』を支える技術
DeNA
PPTX
Unity C#3からC#6に向けて
onotchi_
PDF
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
Taisuke Fukuno
PDF
Functional JavaScript with Lo-Dash.js
Shogo Sensui
PDF
勉強会force#4 Chatter Integration
Kazuki Nakajima
PDF
TypeScript 1.0 オーバービュー
Akira Inoue
PPTX
C#6.0の新機能紹介
Kazunori Hamamoto
PDF
速くなければスマフォじゃない - インターンバージョン-
Kazunari Hara
PPT
Titanium Mobile
Naoya Ito
KEY
第5回LinkedData勉強会@yayamamo
yayamamo @ DBCLS Kashiwanoha
PDF
React.jsでクライアントサイドなWebアプリ入門
spring_raining
PDF
How Smalltalker Works
Sho Yoshida
PDF
OSSから学ぶSwift実践テクニック
庸介 高橋
PDF
Tokyo r 25_lt_isobe
Masayuki Isobe
PPT
言語処理系入門10
Kenta Hattori
PPTX
やや関数型を意識した風Elixir/Phoenixご紹介
fukuoka.ex
F#によるFunctional Programming入門
bleis tift
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
decode2016
Pfi Seminar 2010 1 7
Preferred Networks
TypeScript と Visual Studio Code
Akira Inoue
10年目の『エブリスタ』を支える技術
DeNA
Unity C#3からC#6に向けて
onotchi_
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
Taisuke Fukuno
Functional JavaScript with Lo-Dash.js
Shogo Sensui
勉強会force#4 Chatter Integration
Kazuki Nakajima
TypeScript 1.0 オーバービュー
Akira Inoue
C#6.0の新機能紹介
Kazunori Hamamoto
速くなければスマフォじゃない - インターンバージョン-
Kazunari Hara
Titanium Mobile
Naoya Ito
第5回LinkedData勉強会@yayamamo
yayamamo @ DBCLS Kashiwanoha
React.jsでクライアントサイドなWebアプリ入門
spring_raining
How Smalltalker Works
Sho Yoshida
OSSから学ぶSwift実践テクニック
庸介 高橋
Tokyo r 25_lt_isobe
Masayuki Isobe
言語処理系入門10
Kenta Hattori
やや関数型を意識した風Elixir/Phoenixご紹介
fukuoka.ex
Ad
Recently uploaded
(9)
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
Go conference 2017 Lightning talk
1.
Go 1.7のContextを net/httpで使ってみた Go conference
2017 @fkm / @mokelab
3.
● スマホアプリを書いたり ● レクチャーしたり ●
情報発信したり 何やってるの?
4.
● グッズもあるよ♪ 何やってるの?
5.
Context とは?
6.
リクエストの キャンセル用 インターフェース
7.
は、@lestrratさんが きっと説明済み。。。
8.
そのリクエストに 関するデータを 保存できる
9.
WithValue()
10.
c := r.Context() c
= context.WithValue( c, "name", // キー "moke", // 値 ) いれる
11.
c := r.Context() name
:= c.Value("name") // nameは // interface{} or nil とってくる
12.
// interface{}なので。。。 name, ok
:= c.Value("name").(string) if !ok { // エラーレスポンス } とってくる
13.
現実の 課題
14.
func myHandler(w, r)
{ contentType := ... auth := ... accept := ... // メインの処理 } とあるHandler
15.
func getUserHandler(w, r)
{ contentType := ... auth := ... accept := ... // メインの処理 } 別のHandler 前処理
16.
こんな風にしたい Request 前処理 メインの 処理 エラー インターフェースが 変わる(><)
17.
Contextの出番 Request 前処理 メインの 処理 インターフェースは そのまま Context
18.
ライブラリ書いてみた
19.
イメージ Request メインの 処理 Context 取得 書き込み
20.
リクエストに 関する情報だけ いれるべし
21.
// GET /users/{id}
用 handler := hop.Operations( hop.GetContentType, hop.GetPathString("id"), )(mainHandler) コードは?
22.
// getter関数で // 前処理の結果を取ってくる func
mainHandler(w, r) { contentType := hop.ContentType(r.Context()) ... } コードは?
23.
handler := hop.Operations( hop.GetContentType, hop.GetPathString("id"), )(mainHandler) 何がいいの? 関数!
24.
intとかstringとかいれると 怒られるよ $ golint main.go:10:6: should
not use basic type string as key in context.WithValue WithValueのキー
25.
別名をつければいいよ type cKey string const
keyID cKey = "id" c = context.WithValue(c, keyID, "id1234") WithValueのキー
26.
素敵な Contextライフを!
Download