《Go》golangのインターフェースの重要なポイントを初心者向けに解説

Go

インターフェースをざっくり説明

インターフェースにはメソッドの型とその振る舞いを書きます。メソッドの中身(処理に該当する部分)は書きません。インターフェース型は関数のシグニチャを定義します。ここでいうシグニチャというのはそれぞれの関数の型が集まってできる集合のことを指しています。インターフェースの型はinterface型と呼び、int型やstring型を具象型と呼ぶのに対して、インターフェース型は抽象型と呼ばれます。

別の記事にインターフェースを学ぶ上で抑えておきたい知識の解説をしたのでこちらもご覧になってください。

《Go言語》goのインターフェースを満足させるとは何なのか
インターフェースを満足させるとは何なのか インターフェースが求めるメソッドを全て満たす型 以下のプログラムを見てください。 package main import ...

インターフェース値は値と型を持つ

インターフェース値は値と具象型のタプル型で構成されています。

valuesを動的な値、typeを動的な型と呼んだりします。これを確認するために次のプログラムを用意しました。

%vでディフォルトの値、%Tで値の型をoutput関数で出力するとインターフェース値が値と型を持つことがわかります。

インターフェース値のディフォルトはnil

インターフェースの値のディフォルトはnilです。次のプログラムを見てください。

インターフェースの値はnilですが、具象型は nilではなく*main.Tが入っています。これはインタフェースで定義されているメソッドが実装されているので、具象型はnilになりません。次のプログラムをみてください。

インターフェースが要求しているMメソッドを実装していない場合、インターフェースの値と具象型は両方nilになります。

空のインターフェース

次のプログラムのように、シグニチャを持たない空のインターフェースも定義することができます。

変数iはシグニチャをもたない空のインターフェースです。インターフェースになにも代入しない場合は値と型はnilになります。一方具象型の値を代入するとインターフェースは代入された値とその型を持ちます。

空のインターフェースの使い道

この空のインターフェースは関数、メソッドの引数の型として使われることが多いです。例えば引数の値を出力したい関数があったとします。受け付ける引数の型が一種類しかない場合は特に気になりませんが、複数の型を受け入れたい場合はどうしますか?まさにこの時、空のインターフェースを使うのです。引数の型を空のインターフェースにすればどんな型でも引数としてを受け付けることができます。

型アサーション

型アサーションにはついては別の記事で解説しましたのでこちらをご覧ください。

《GO言語》インターフェースの型アサーションとは何か
型アサーションとは何か プログラミングにおいてアサーションはプログラムが意図した通りに動いているかをチェックする機能のことを指します。golangの型アサーションは型が意図したも...

番外:Goを学ぶ上で最高の一冊

プログラミング言語Go

ベル研究所に在籍していたカナダ出身の学者ブライアン・カーニハンさんが執筆した、書籍の日本語訳版です。このブライアン・カーニハンさんという方はC言語とUnixの開発に大きく貢献した方として非常に有名な学者です。その方が執筆したこの本は、アカデミックかつ簡潔な言葉でGo言語について徹底解説してくれます。Go言語をしっかり学びたい人には最高の一冊です。

番外:その他おすすめの記事

開発がもっと快適に、楽しくなるアイテムを紹介します。アイテム1つで開発の楽しさが全然変わるので、良いアイテムにはじゃんじゃんお金を投資すると良いですよ。

おすすめアイテム①

自分はオフィス次の2点の座布団と背もたれクッションを利用してます。姿勢が安定し、お尻への負担が激減します。オフィスにいるのに自宅で作業しているような感覚になるので気に入ってます。また疲労感もかなり減るので費用対効果が非常に高いアイテムです。

おすすめアイテム②

ブックスタンドみなさん使ってますか?PCを打ちながら参考書見る時に手で抑える必要がなくなるので非常に便利です。自分も購入した時なんでいままで使ってなかたんだろうと後悔したのでまだ持ってない方は買っておくと作業効率があがります。

おすすめアイテム③

PCスタンド、magic keyboard、magic mouseを購入してから、開発効率があがり、身体的負担が減って快適に開発ができるようになりました。

エンジニアの基礎知識・教養

別の記事でエンジニアとして知っておくべき技術本についてまとめました。初心者には最低限読んでおいて欲しい技術本をまとめました。例えば「リーダブルコード」などは技術力の高いエンジニアなら必ず過去に読んでいる本だと思います。

時短アイテム!日々の生活の質を上げる

日常生活における無駄を省く表品をまとめました。1日無駄な作業時間が10分発生するとしたら1年間で3600時間もその無駄な作業に時間を費やすことになります。このような魔の作業を消し去ってくれる商品をまとめました。。

気軽にお声かけください

このような形でほぼ毎日、情報発信を行ってます。技術的な部分で誤っている点などもあるかもしれません。その様な部分を発見した方はTwitterのDMなどで知らせていただければ凄い嬉しいです。また自身自身のエンジニアのネットワークを広げたいと思ってます。日頃六本木や渋谷にいることが多いですので気軽にお誘いください。情報交換しましょう。

筆者
筆者

今回の記事の内容は以上で終了です。最後まで読んでくれてありがとうございました。Twitterもやってるのでフォローしてくれたら嬉しいです!

タイトルとURLをコピーしました