見出し画像

golang アスタリスク(*)の意味と使い方について理解する

Go言語/golangの学習を進めるにあたって、必ず理解しなければいけないのがアスタリスク(*)についてです。

今回はGo言語で使用されるアスタリスク(*)の意味と使い方について解説していきます。

まずアスタリスク(*)は主にポインタに関連した操作に使用されます。

ポインタとは

ポインタは、メモリの効率的な管理や関数呼び出し時のデータの受け渡しに主に使われる機能です。
ポインタを使用する際は、間接参照やメモリアドレスの取り扱いに注意が必要となります。


Go言語のアスタリスク(*)の意味と使い方

それではアスタリスク(*)が具体的にどのようなタイミングで使用されるか紹介していきます。


ポインタ型の定義

ある型へのポインタ型を定義する際に使用されます。
例えば、*intと記述すれば、それは「intへのポインタ型」という意味になります。

var x int = 10
var p *int = &x

pは、int型の変数xへのポインタということになります。


デリファレンス(間接参照)

アスタリスクを変数の前に書くことで、そのポインタが指す元の値にアクセスすることができます。
これをデリファレンス(間接参照)と呼びます。

var x int = 10
var p *int = &x
fmt.Println(*p)

上記コードではpが指すメモリの値(xの値)を出力できます。


ポインタ型への型変換

新しい変数や構造体のフィールドがポインタ型の場合、アスタリスクを使用してその型を宣言します。

type xxxx struct {
    x*int
}


新規構造体のポインタの作成

new()関数、もしくはリテラル構文を使うことで新しい構造体を作成するタイミングで、ポインタを作成する際にもアスタリスクが使われます。

type xxxx struct {
    xint
}
var a *xxxx = new(xxxx)
var b *xxxx = &xxxx {x: 5}

変数aはnewを使った例、変数bはリテラル構文を使った例となります。


golangをもっと詳しくなりたい方に

初めてのGo言語

Go言語の入門から応用まではこの一冊で網羅されています。説明も順序立てて説明されており完成度の高い参考書となっています。


詳解Go言語Webアプリケーション開発

こちらはGo言語の基礎知識を得たあとに読むことをすすめる本となっています。ハンズオン形式で手を動かしながら実装をしていくことができるため、実際の開発を意識しながらGo言語を学ぶことができます。

以下の記事では他にも筆者が実際に読んでおすすめしたい本をまとめています。


【Go入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)

まだGo言語の勉強を始めていない方、全くの初心者の方にはこちらのUdemy教材が最もおすすめです。

この教材ではgolangの基礎について網羅的に学ぶことができます。ただ見て学ぶだけでなく、講座の中でアプリ作成まで行うことで学んだことの理解をさらに深めることができます。


現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発

個人的に最も勉強になったのは「現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発」という教材です。
本格的なレクチャーに入る前に、なぜGoなのか、なぜFintechなのかについて説明されていることで、Goの概念や意味について大枠から理解することができます。

以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?