Skip to main content

Get full access to 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス and 60K+ other titles, with a free 10-day trial of O'Reilly.

There are also live events, courses curated by job role, and more.

2.2 既存のデータ型を拡張する

型を定義する方法がわかった所で、intstringといった組み込み型、スライスやmap、チャネルなどの複合型を拡張して利用する方法を学びます。typeで型定義する場合、元になる型を基底型(underlying type)と呼びます。新しく型を作ることで、ベースとなる型の特性を引き継ぎながら、メソッドを追加して拡張できます。

「アプリケーションを作成する」作業を分割していくと、だいたい次の構成要素に分けられるでしょう。

  • 提供されている基本的なツール(標準ライブラリ、文法)を組み合わせる

  • ライブラリやフレームワークを使うためのグルー(糊づけ)コードを書く

Goは前者に比重があります。開発を経験しても特定のフレームワークの知識しか蓄積されないということも、大規模なフレームワークの中から呼び出される特定の処理を実装するだけということもなく、main()関数からプログラムの実行を追いかけることができ、汎用的に使える知識を身につけやすく、開発者を成長させる言語です。サードパーティーのフレームワークであっても、標準ライブラリの薄いラッパーであることが多く、標準ライブラリを学ぶインセンティブが高くなっています。

「標準に近いところでコードを書く」作業は、さまざまなレベルで行われていますが、ミクロなレベルでのテクニックとして、構造体を定義せずに既存の組み込み型を直接拡張する書き方があります。このような1つの要素に対して型定義を行ってメソッドを実装する手法は「Goらしい」コードだと言えるでしょう。

構造体についてはこの後に説明しますが、他のデータをラップした複合型を作って実装する手法は他の言語にもあります。たとえば構造体を作ってからメソッドを定義するときに構造体の要素が1つしかなかったとしたら、そのコードは、おそらくJava/Python/Rubyなどに慣れたプログラマーによって書かれたものだと推測できます。 ...

Get 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.

Don’t leave empty-handed

Get Mark Richards’s Software Architecture Patterns ebook to better understand how to design components—and how they should interact.

It’s yours, free.

Get it now
Cover of Software Architecture Patterns

Check it out now on O’Reilly

Dive in for free with a 10-day trial of the O’Reilly learning platform—then explore all the other resources our members count on to build skills and solve problems every day.

Start your free trial Become a member now