Soumettre la recherche
Mettre en ligne
5分でわかるGoのポインタ
•
Télécharger en tant que PPTX, PDF
•
1 j'aime
•
3,810 vues
Y N
Suivre
2019-01-29 Goゆるふわ勉強会の資料
Lire moins
Lire la suite
Ingénierie
Signaler
Partager
Signaler
Partager
1 sur 27
Télécharger maintenant
Recommandé
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり
Kazuyuki TAKASE
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
Recommandé
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり
Kazuyuki TAKASE
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
Rest ful api設計入門
Rest ful api設計入門
Monstar Lab Inc.
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
例外設計における大罪
例外設計における大罪
Takuto Wada
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術
Takafumi ONAKA
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
Domain Driven Design with the F# type System -- F#unctional Londoners 2014
Domain Driven Design with the F# type System -- F#unctional Londoners 2014
Scott Wlaschin
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
20160526 依存関係逆転の原則
20160526 依存関係逆転の原則
bonjin6770 Kurosawa
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
nasa9084
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
Pyconjp2014_implementations
Pyconjp2014_implementations
masahitojp
Contenu connexe
Tendances
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
Rest ful api設計入門
Rest ful api設計入門
Monstar Lab Inc.
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
例外設計における大罪
例外設計における大罪
Takuto Wada
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術
Takafumi ONAKA
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
Domain Driven Design with the F# type System -- F#unctional Londoners 2014
Domain Driven Design with the F# type System -- F#unctional Londoners 2014
Scott Wlaschin
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
20160526 依存関係逆転の原則
20160526 依存関係逆転の原則
bonjin6770 Kurosawa
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
nasa9084
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
Tendances
(20)
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
Rest ful api設計入門
Rest ful api設計入門
メタプログラミングって何だろう
メタプログラミングって何だろう
Redisの特徴と活用方法について
Redisの特徴と活用方法について
テストコードの DRY と DAMP
テストコードの DRY と DAMP
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
例外設計における大罪
例外設計における大罪
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Domain Driven Design with the F# type System -- F#unctional Londoners 2014
Domain Driven Design with the F# type System -- F#unctional Londoners 2014
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
20160526 依存関係逆転の原則
20160526 依存関係逆転の原則
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Similaire à 5分でわかるGoのポインタ
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
Pyconjp2014_implementations
Pyconjp2014_implementations
masahitojp
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
Tetsuya Morimoto
dwangocpp1-lt
dwangocpp1-lt
karupanerura
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
Sotaro Omura
エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法
Takuya Ueda
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
.NET Compiler Platform
.NET Compiler Platform
信之 岩永
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
Hiraku Nakano
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応
KyutatsuNishiura
Mono is Dead
Mono is Dead
melpon
20151213 tokushimaapp
20151213 tokushimaapp
健一 辰濱
Pythonにおけるデバッガツールpdbについて
Pythonにおけるデバッガツールpdbについて
Ryota Sakamoto
.NETのTuple応用チャレンジ WCFとC++/CLI
.NETのTuple応用チャレンジ WCFとC++/CLI
keitasudo1
Start!! Ruby
Start!! Ruby
mitim
第1回python勉強会
第1回python勉強会
Yoshio Shimomura
ゆるかわPhp
ゆるかわPhp
Ryota Mochizuki
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
C#言語機能の作り方
C#言語機能の作り方
信之 岩永
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
Similaire à 5分でわかるGoのポインタ
(20)
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Pyconjp2014_implementations
Pyconjp2014_implementations
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
dwangocpp1-lt
dwangocpp1-lt
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
.NET Compiler Platform
.NET Compiler Platform
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応
Mono is Dead
Mono is Dead
20151213 tokushimaapp
20151213 tokushimaapp
Pythonにおけるデバッガツールpdbについて
Pythonにおけるデバッガツールpdbについて
.NETのTuple応用チャレンジ WCFとC++/CLI
.NETのTuple応用チャレンジ WCFとC++/CLI
Start!! Ruby
Start!! Ruby
第1回python勉強会
第1回python勉強会
ゆるかわPhp
ゆるかわPhp
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
C#言語機能の作り方
C#言語機能の作り方
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
5分でわかるGoのポインタ
1.
5分でわかる Goのポインタ
2.
ポインタとは?
3.
用語 • & と
* •&(アンパサンド)はアドレス演算子 •*(アスタリスク)は間接参照演算子
4.
ポインタとは? • C/C++でメモリアドレスを表すための、いわゆる”ポインタ”
5.
https://wandbox.org/permlink/Ot9bVGoiwNUec6ab
6.
ポインタとは? • GoではC/C++の記法を踏襲し、 *演算子
と &演算子 を使う
7.
https://wandbox.org/permlink/pnR1upjDNCxh0AiC
8.
いつポインタを使うべきか?
9.
用語 • 〜渡し • ポインタで変数を渡すときは”ポインタ渡し” •
そのままのときは”値渡し”
10.
いつポインタを使うべきか? • 既存のコード/外部ライブラリの関数が引数にポインタ型を取る場合 • 怖くても使わざるを得ない…😭 •
使っていくうちに慣れてパターンがわかってくる👍
11.
12.
13.
いつポインタを使うべきか? • 既存のコード/外部ライブラリの関数が引数にポインタ型を取る場合 • 恐らく次の場合のいずれかに該当する
14.
いつポインタを使うべきか? • 大きいstruct, array •
なぜなら値渡しだとコピーするコストが大きいから
15.
いつポインタを使うべきか? • ある構造体について、変数として渡した先で変更を加えたい場合
16.
https://wandbox.org/permlink/7tPKd1tFE950LW2y
17.
いつポインタを使うべきか? • その他、メモリコピー量を低減できるようなケース • 例えばsliceの場合、sort.Slice()のような関数でソートするときに、要素を並べ 替える必要があるため、ポインタとして扱ったほうがいい
18.
https://golang.org/pkg/sort/#Slice
19.
https://wandbox.org/permlink/4fQFCwf1jXLGMjFX
20.
https://wandbox.org/permlink/k9E2L5nKyWrKq72d
21.
再掲:
22.
ポインタを使うべきでない場合
23.
ポインタを使うべきでない場合 • プリミティブな値 • int,
bool, stringなど
24.
ポインタを使うべきでない場合 • そもそもポインタのような値 • slice,
map, chan, func など
25.
例外 • プリミティブな型だけどnilを許容したい • C#でいうところのint?のような
(参考: null許容型)
26.
https://wandbox.org/permlink/BakTwv9IKhOtDyUs
27.
例外 • レシーバ • var
a A について • 🆗 a.f0() • ❌ a.f1() // コンパイルエラー • var p &A について • 🆗 p.f0() • 🆗 p.f1() • ただし、pがnilの場合 • ❌ p.f0() // ランタイムエラー😇 • ❌ p.f1() // (pに関数内で触れたタイミングで)ランタイムエラー😇 https://wandbox.org/permlink/kEMNLHbjfr9x3ye8
Télécharger maintenant