フリーランス チャレンジ!!

フリーランス チャレンジ!!

現役フリーランスエンジニアが書く雑記ブログ

【Go言語】基本文法サンプル2(interface、スライス、map、エラー処理、panic、recover)

スポンサーリンク

スポンサーリンク

Go 言語 基本 文法 サンプル



前回の続きです。

 

www.ksakae1216.com

 

今回は、interface、スライス、map、エラー処理、panic、recoverについて解説します!

 

 

interface

giste1476d1affd6034ebfcc9608ba237a29

 

8~10行目のインターフェースでEat()を実装してるのでCarlingGirlもFoodFighterもHumanとして扱える
正直Java経験者の私にはピンとこない仕様ですが慣れるしかなさそう。。。

 

【実行結果】

f:id:ksakae1216:20180702220343p:plain

 

スライス

gista6f23ce501f560d94d49649526f32c3b

 
配列と似ているが値を参照型で保持している。
スライス式"[:]"を使えばスライスになる。

 

【実行結果】

f:id:ksakae1216:20180702220508p:plain

 

map

gist8bc6953454cbbbb647327e7d6ad22044

 

マップの格納順は補償されない。
存在しないキーを指定してもエラーにならずnilが返る。

 

【実行結果】

f:id:ksakae1216:20180702220555p:plain

 

エラー処理

gist5d34abe64c6a932296cbfe435c7b52f0

 

11行目にコメントしてますが、エラーは2つ目の戻り値で返ってくるそうです。 

 

【実行結果】

f:id:ksakae1216:20180702220632p:plain

 

panic

gistea0ca98a4d1ac0f2f19d12a739223707

 

panicが発生すると以降のコードは実行されません。
但し、deferはpanicが発生しても実行されます。

 

またdeferはそれぞれの関数の最後に実行されます。

なのでdeferにはファイルやDBのクローズ処理を記載するのがいいです。

 

【実行結果】

f:id:ksakae1216:20180702220717p:plain

 

recover

gist55389539e6654d56183c35eafde4c7ce

 

panicが発生した時だけ処理したい場合、recoveryを使います。

 

【実行結果】

f:id:ksakae1216:20180702220804p:plain

 

Gitに登録しました

前回記事のソースに追加で今回のソースもGitに登録しました。

github.com

 

【関連記事】

このソースを試して見たい方は下記記事で簡単に開発環境を作成できますよ!

www.ksakae1216.com