Submit Search
Upload
Go言語のスライスを理解しよう
•
Download as KEY, PDF
•
78 likes
•
31,311 views
Yasutaka Kawamoto
Follow
120825にGDGKOBEで発表した資料です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 60
Download now
Recommended
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達
Yusuke Wada
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Recommended
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達
Yusuke Wada
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
例外設計における大罪
例外設計における大罪
Takuto Wada
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
NTT DATA Technology & Innovation
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
Masahiro Nishimi
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
ワタシはSingletonがキライだ
ワタシはSingletonがキライだ
Tetsuya Kaneuchi
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Hironobu Isoda
イベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
Tackling Complexity
Tackling Complexity
Yoshitaka Kawashima
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
私なりのGo言語のご紹介
私なりのGo言語のご紹介
Ryuji Iwata
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
Yasutaka Kawamoto
More Related Content
What's hot
例外設計における大罪
例外設計における大罪
Takuto Wada
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
NTT DATA Technology & Innovation
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
Masahiro Nishimi
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
ワタシはSingletonがキライだ
ワタシはSingletonがキライだ
Tetsuya Kaneuchi
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Hironobu Isoda
イベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
Tackling Complexity
Tackling Complexity
Yoshitaka Kawashima
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
What's hot
(20)
例外設計における大罪
例外設計における大罪
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
メタプログラミングって何だろう
メタプログラミングって何だろう
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
ワタシはSingletonがキライだ
ワタシはSingletonがキライだ
Pythonによる黒魔術入門
Pythonによる黒魔術入門
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
イベント・ソーシングを知る
イベント・ソーシングを知る
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Tackling Complexity
Tackling Complexity
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Viewers also liked
私なりのGo言語のご紹介
私なりのGo言語のご紹介
Ryuji Iwata
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
Yasutaka Kawamoto
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料
Yuji Otani
Go言語オーバービュー201507
Go言語オーバービュー201507
エンジニア勉強会 エスキュービズム
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
Yosuke Furukawa
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
Yoshiki Shibukawa
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
京大 マイコンクラブ
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
Takuya Ueda
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda
Talknoteとgolangと私
Talknoteとgolangと私
Kenyu Miura
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
Takuya Ueda
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Hirokazu Fukami
Go入門
Go入門
Takuya Ueda
とあるBtoB企業でGoを使ってみた話
とあるBtoB企業でGoを使ってみた話
Aiga Matsuo
粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
Takuya Ueda
JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門
Shohei Arai
おっぴろげJavaEE DevOps
おっぴろげJavaEE DevOps
Taiichilow Nagase
Phperがgoをさわってみた
Phperがgoをさわってみた
yasuo424
Basic of virtual memory of Linux
Basic of virtual memory of Linux
Tetsuyuki Kobayashi
Viewers also liked
(20)
私なりのGo言語のご紹介
私なりのGo言語のご紹介
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料
Go言語オーバービュー201507
Go言語オーバービュー201507
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
Talknoteとgolangと私
Talknoteとgolangと私
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Go入門
Go入門
とあるBtoB企業でGoを使ってみた話
とあるBtoB企業でGoを使ってみた話
粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門
おっぴろげJavaEE DevOps
おっぴろげJavaEE DevOps
Phperがgoをさわってみた
Phperがgoをさわってみた
Basic of virtual memory of Linux
Basic of virtual memory of Linux
Similar to Go言語のスライスを理解しよう
今から始める Lens/Prism
今から始める Lens/Prism
Naoki Aoyama
2016年6月版データマエショリスト入門
2016年6月版データマエショリスト入門
Yuya Matsumura
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920
Nobuaki Oshiro
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
Tomoharu ASAMI
R Language Definition 2.2 to 2.3
R Language Definition 2.2 to 2.3
Kohta Ishikawa
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101
Nobuaki Oshiro
textsearch_jaで全文検索
textsearch_jaで全文検索
Akio Ishida
Tokyo r33 beginner
Tokyo r33 beginner
Takashi Minoda
2017年3月版データマエショリスト入門
2017年3月版データマエショリスト入門
Yuya Matsumura
Prosym2012
Prosym2012
MITSUNARI Shigeo
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
和弘 井之上
Aizu lt tokyo_luxion
Aizu lt tokyo_luxion
Tomoaki Tamura
2017年3月版データマエショリスト入門(誤植修正版)
2017年3月版データマエショリスト入門(誤植修正版)
Yuya Matsumura
Rを用いたGIS
Rを用いたGIS
Mizutani Takayuki
Intoroduction of Pandas with Python
Intoroduction of Pandas with Python
Atsushi Hayakawa
Effective python #5, #6
Effective python #5, #6
bontakun
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
MITSUNARI Shigeo
Tokyo r47 beginner_2
Tokyo r47 beginner_2
Takashi Minoda
Tokyo r45 beginner_2
Tokyo r45 beginner_2
Takashi Minoda
Tokyo r27
Tokyo r27
Takashi Minoda
Similar to Go言語のスライスを理解しよう
(20)
今から始める Lens/Prism
今から始める Lens/Prism
2016年6月版データマエショリスト入門
2016年6月版データマエショリスト入門
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
R Language Definition 2.2 to 2.3
R Language Definition 2.2 to 2.3
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101
textsearch_jaで全文検索
textsearch_jaで全文検索
Tokyo r33 beginner
Tokyo r33 beginner
2017年3月版データマエショリスト入門
2017年3月版データマエショリスト入門
Prosym2012
Prosym2012
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
Aizu lt tokyo_luxion
Aizu lt tokyo_luxion
2017年3月版データマエショリスト入門(誤植修正版)
2017年3月版データマエショリスト入門(誤植修正版)
Rを用いたGIS
Rを用いたGIS
Intoroduction of Pandas with Python
Intoroduction of Pandas with Python
Effective python #5, #6
Effective python #5, #6
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Tokyo r47 beginner_2
Tokyo r47 beginner_2
Tokyo r45 beginner_2
Tokyo r45 beginner_2
Tokyo r27
Tokyo r27
More from Yasutaka Kawamoto
Navigation Architecture Component(京都Devかふぇ バージョン)
Navigation Architecture Component(京都Devかふぇ バージョン)
Yasutaka Kawamoto
Navigation Architecture Component
Navigation Architecture Component
Yasutaka Kawamoto
navigation-uiライブラリは、既存のアプリを置き換える ことができないかもしれない
navigation-uiライブラリは、既存のアプリを置き換える ことができないかもしれない
Yasutaka Kawamoto
2018 05-19 google-io2018_report
2018 05-19 google-io2018_report
Yasutaka Kawamoto
Introduce the activities of gdg kobe 130917
Introduce the activities of gdg kobe 130917
Yasutaka Kawamoto
5分でわかるGoogle+API
5分でわかるGoogle+API
Yasutaka Kawamoto
Serviceについて
Serviceについて
Yasutaka Kawamoto
More from Yasutaka Kawamoto
(7)
Navigation Architecture Component(京都Devかふぇ バージョン)
Navigation Architecture Component(京都Devかふぇ バージョン)
Navigation Architecture Component
Navigation Architecture Component
navigation-uiライブラリは、既存のアプリを置き換える ことができないかもしれない
navigation-uiライブラリは、既存のアプリを置き換える ことができないかもしれない
2018 05-19 google-io2018_report
2018 05-19 google-io2018_report
Introduce the activities of gdg kobe 130917
Introduce the activities of gdg kobe 130917
5分でわかるGoogle+API
5分でわかるGoogle+API
Serviceについて
Serviceについて
Recently uploaded
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
Recently uploaded
(12)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
Go言語のスライスを理解しよう
1.
Go言語のスライスを 理解しよう
2012/08/25 GDG Kobe
2.
自己紹介 • 河本 泰孝
@yasi_life → @kwmt27 • 私とGo言語との関わり • 2011年のDevQuizで初めて触った • 2012年1月のGo言語勉強会に参加 • 2012年4月の東海GTUGさんのGAE 勉強会でGoを使った
3.
自己紹介 • 最近では公式サイトの
• Writing Web Applications • Go Slices を翻訳してみたり。 https://github.com/ kwmt/golangwiki/wiki
4.
自己紹介 ということで、 • 1月のGo言語勉強会では スライスまで出来なくて、 •
自分でスライスについて翻訳してみた ので 公式サイトのGo Slicesを元に発表させて 頂きます。
5.
もくじ
6.
もくじ 1.かるく復習 2.Go言語の配列とは? 3.スライスとは? (1)特徴 (2)内部構造 (3)拡張する (4)削除する
7.
進め方 説明しながら、実際に動きを確かめるデモを していきたいと思います。 もし可能なら下記のサイトで動かせるので一 緒に動かして行きましょう。 http://play.golang.org/ でもそこまでガッツリやって頂く時間がない かもしれません。半ハンズオン的な感じです す。 ソース場所:https://github.com/kwmt/
8.
1.かるく復習 変数宣言のいろいろ var a
int = 1 // int型 a := 1 標準出力するには import “fmt” fmt.Printf(“a=%d¥n”, a) デモ slice_0.go
9.
2.Go言語の配列とは?
10.
配列の定義方法 長さ(length) と要素の型を指定 var a
[4]int
11.
配列の定義方法 長さ(length) と要素の型を指定 var a
[4]int 長さ (length)
12.
配列の定義方法 長さ(length) と要素の型を指定 var a
[4]int 長さ 要素の型 (length)
13.
配列の特徴 a[n]はn番目の要素にアクセス可能 //配列宣言 var
a [4]int //0番目の要素に1を代入 a[0] = 1 //変数iを宣言してa[0]をiに代入 i := a[0] // 表示すると // i = 1 デモ slice_1.go
14.
配列の特徴 明示的な初期化は不要 (自動的に0で初期化されています) 前ページの例の0番目の要素以外は 値0となっています。 //
a[0]==1,a[1]==0,a[2]==0,a[3]==0 デモ slice_1.go
15.
配列の特徴 配列変数は配列全体を表しています。 つまりC言語のように、先頭の配列要素へ のポインタではありません。 イメージ
16.
配列の特徴 配列リテラルの書き方 ・要素数を指定する b :=
[2]string{“Penn”,”Teller”} ・要素数を指定しない (コンパイラに数えさせる) b := [...]string{“Penn”,”Teller”} デモ slice_1.go
17.
3.スライスとは?
18.
スライスの定義方法 長さ(length) と要素の型を指定 var a
[]int 長さ (length) 要素の型
19.
スライスの定義方法 長さ(length) と要素の型を指定 var a
[]int 長さ (length) 要素の型
20.
(1)スライスの特徴 スライスリテラルの書き方 letters :=
[]string{“a”,”b”,”c”,”d”} 要素数の指定以外は、 配列リテラルの書き方と同じ
21.
(1)スライスの特徴 組み込み関数 makeを 使ってスライスを作成できる。
22.
(1)スライスの特徴
make関数とは make関数の書式 func make([]T, len, cap) []T T:要素の型 len:長さ(length) cap:容量(capacity)(オプション)
23.
(1)スライスの特徴
make関数とは make関数は、スライス型のオブジェク トを確保し、初期化する。 1番目の引数の型と同じ型を返す。 ポインタを返すわけではない。 func make([]T, len, cap) []T
24.
(1)スライスの特徴 make関数を使って スライスを作成する例 var s []byte s
= make([]byte, 5, 5) // s=[0 0 0 0 0] // sの型=[]uint8 デモ slice_2.go
25.
(1)スライスの特徴 容量(capacity)は省略できる var s []byte s
= make([]byte, 5, 5) 次のように簡略化できる s := make([]byte, 5) ※容量を省略すると、長さ=容量となる デモ slice_2.go
26.
(1)スライスの特徴 スライスの長さ(length)と 容量(capacity)を 調べるには、組み込み関数のlenと capを使用する。 len(s) // ==
5 cap(s) // == 5 デモ slice_2.go
27.
(1)スライスの特徴
スライスのゼロ 初期化さてないスライスの値:nil スライス==nilならば、 len,cap関数は0を返す デモ slice_2.go
28.
(1)スライスの特徴
re-slice 再スライス化可能 b := []byte{‘g’,’o’,’l’,’a’,‘n’,’g’} c := b[1:4] // c=[]byte{’o’,’l’,’a’} // スライスcはスライスbと同じメモリ領域 デモ slice_2.go
29.
(1)スライスの特徴
re-slice b[1:4] デモ slice_2.go
30.
(1)スライスの特徴
re-slice b[1:4] デモ slice_2.go
31.
(1)スライスの特徴
re-slice b[1:4] これら2つの数字は 省略可能 デモ slice_2.go
32.
(1)スライスの特徴
re-slice b[:] b[:2] b[2:] デモ slice_2.go
33.
(1)スライスの特徴
re-slice b[:] ==b b[:2] b[2:] デモ slice_2.go
34.
(1)スライスの特徴
re-slice b[:] ==b b[:2] ==[]byte{‘g’,’o’} b[2:] デモ slice_2.go
35.
(1)スライスの特徴
re-slice b[:] ==b b[:2] ==[]byte{‘g’,’o’} b[2:] ==[]byte{‘l’,’a’,’n’,’g’} デモ slice_2.go
36.
(1)スライスの特徴
re-slice 自分のコードで、s[:len(s)] と再スライスしてたよ、、、へへ。 デモ slice_2.go
37.
(1)スライスの特徴
re-slice 配列からスライスを作る デモ slice_2.go
38.
(1)スライスの特徴
re-slice 配列からスライスを作る x := [3]string{"Лайка", "Белка", "Стрелка"} s := x[:] // スライスsはxの記憶領域を参照 デモ slice_2.go
39.
(2)スライスの内部構造 スライスは、配列内の連続した領域への
イメージ 参照であり、以下の3つから構成される。 ๏配列へのポインタ ๏セグメントの長さ(length) ๏容量(capacity) (セグメントの最大の長さ)
40.
(2)スライスの内部構造 s := make([]byte,5) イメージ
デモ slice_3.go
41.
(2)スライスの内部構造 s = s[2:4] イメージ
デモ slice_3.go
42.
(2)スライスの内部構造 再スライスされた要素を変更すると、 元のスライスの要素も変更される。 d :=
[]byte{'r', 'o', 'a', 'd'} e := d[2:] // e == []byte{'a', 'd'} e[1] == 'm' // e == []byte{'a', 'm'} // d := []byte{'r', 'o', 'a', 'm'} デモ slice_3.go
43.
(2)スライスの内部構造 len < cap
の場合、lenをcapまで拡張できる s = s[:cap(s)] イメージ デモ slice_3.go
44.
(2)スライスの内部構造 容量を超えて拡張できない。
45.
(2)スライスの内部構造 容量を超えて拡張できない。 容量を増やせば、拡張できる。
46.
(3)スライスを拡張する
copyとappend関数 容量(capacity)を増やすには、 1.新しく大きな容量のスライスを作成 2.その新しいスライスに元のスライスの 内容をコピーする
47.
(3)スライスを拡張する
copyとappend関数 s := make([]byte, 5) t := make([]byte, len(s), (cap(s)+1)*2) for i := range s { t[i] = s[i] } s = t デモ slice_4.go
48.
(3)スライスを拡張する
copyとappend関数 s := make([]byte, 5) t := make([]byte, len(s), (cap(s)+1)*2) for i := range s { t[i] = s[i] } s = t デモ slice_4.go
49.
(3)スライスを拡張する
copyとappend関数 copy関数を使って次のように書ける s := make([]byte, 5) t := make([]byte, len(s), (cap(s)+1)*2) copy(t, s) s = t デモ slice_4.go
50.
(3)スライスを拡張する
copyとappend関数 書式は下記の通り func copy(dst, src []T) int 処理内容は、元のスライスから先のス ライスにデータをコピーする コピーした要素数を返す
51.
(3)スライスを拡張する
copyとappend関数 copy関数は異なるlengthのスライス でもコピーできる var a = [...]int{0, 1, 2, 3, 4, 5, 6, 7} var s = make([]int, 6) n1 := copy(s, a[0:]) //n1=6, s=[]int{0,1,2,3,4,5} デモ slice_4.go
52.
(3)スライスを拡張する
copyとappend関数 スライスにデータを追加するには、 append関数を使用する
53.
(3)スライスを拡張する
copyとappend関数 書式は下記の通り func append(s []T, x ...T) []T 処理内容は、スライスsの最後に、 要素xを追加する より大きな容量が必要なら(自動的に)拡張 してくれる
54.
(3)スライスを拡張する
copyとappend関数 s3 := make([]int,1) // s3 == []int{0} // cap(s3) == 1 s3 = append(s3, 1, 2, 3) // s3 == []int{0, 1, 2, 3} // cap(s3) == 4 デモ slice_4.go
55.
(3)スライスを拡張する
copyとappend関数 スライスにスライスを追加するには、 ...を使用する a := []string{“John”,”Paul”} b := []string{"George", "Ringo", "Pete"} a = append(a, b...) //a == []string{"John", "Paul", "George", "Ringo", "Pete"} デモ slice_4.go
56.
(4)スライスから削除する スライスからある要素を削除するには //例えば3を削除したい場合 s := []int{1,
2, 3, 4, 5} s=append(s[:2],s[3:]...) //s==[]int{1, 2, 4, 5} ※スライスに対しては、delete関数みたい なものは用意されていません。 デモ slice_5.go
57.
(4)スライスから削除する これだと容量は削除されない。 s = [1
2 3 4 5] len(s)= 5 cap(s)= 5 アドレス:0x42120400 s = [1 2 4 5] len(s)= 4 cap(s)= 5 アドレス:0x42120400 デモ slice_5.go
58.
(4)スライスから削除する ひとまず、削除関数を作っておきます。 func
delete(i int, s []int) []int{ ! s = append(s[:i], s[i+1:]...) ! return s } これは先程のを関数にまとめただけ。 もちろん容量は削除されない。 デモ slice_5.go
59.
(4)スライスから削除する 容量を削除するには、このdelete関数内で
再スライスした長さ分の スライスcを作り、 作ったスライスに再スライスしたsをコピーします。 func delete(i int, s []int) []int{ ! s = append(s[:i], s[i+1:]...) ! c := make([]int, len(s)) ! copy(c, s) ! return c } デモ slice_5.go
60.
最後に Let’s enjoy Go
life with Slice ! ご清聴ありがとうございました
Editor's Notes
\n
\n
\n
\n
\n
\n
fmt.Printf(&#x201C;a&#x306E;&#x578B;&#xFF1A;%T&#xA5;n&#x201D;, a) //a&#x306E;&#x578B;&#xFF1A; int\n
\n
\n
\n
\n
\n
a[0]=1\ni := a[0]\ni = 2\nfmt.Println("i=",i) // i=2\nfmt.Println("a[0]=",a[0]) // a[0]=1\n\n
a[0]=1\ni := a[0]\ni = 2\nfmt.Println("i=",i) // i=2\nfmt.Println("a[0]=",a[0]) // a[0]=1\n\n
a[0]=1\ni := a[0]\ni = 2\nfmt.Println("i=",i) // i=2\nfmt.Println("a[0]=",a[0]) // a[0]=1\n\n
a[0]=1\ni := a[0]\ni = 2\nfmt.Println("i=",i) // i=2\nfmt.Println("a[0]=",a[0]) // a[0]=1\n\n
\n
\n
\n
\n
\n
a[0]=1\ni := a[0]\ni = 2\nfmt.Println("i=",i) // i=2\nfmt.Println("a[0]=",a[0]) // a[0]=1\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Download now