コンテンツにスキップ

とってもやさしいGo言語入門

チェック

  • [ ] 本文を確認した
  • [ ] 概要を確認した
  • [ ] タグを確認した
  • [ ] inbox/ 直下へ移行した

概要

Go 初学者向けに、ポインタ、構造体、メソッド、インターフェースを丁寧に説明する Zenn 記事。 メモリ、メモリアドレス、&*、ポインタ型の意味から入り、Go の基礎概念を図解ベースで説明している。 A Tour of Go で難しく感じやすい箇所を補助する教材として使いやすい。

本文

記事は、Go を学び始めた人や A Tour of Go でつまずいた人に向けて書かれている。 主に扱うのは、ポインタ、構造体、メソッド、インターフェース。

ポインタの説明では、まずストレージ、メインメモリ、CPU の関係を説明する。 プログラムはストレージに保存され、起動時にメインメモリへ読み込まれ、CPU がメモリ上の命令やデータを読み書きする。 メモリには 1 バイト単位の場所があり、それぞれにメモリアドレスが付く。

Go では変数のメモリアドレスを &変数名 で取得できる。 そのアドレスを保持する変数がポインタ変数。 ポインタは「何かを指し示すもの」であり、Go では特定のメモリアドレスを指す。

a := "a"
ptrA := &a
fmt.Println(ptrA)  // アドレス
fmt.Println(*ptrA) // "a"

*ptrA は間接参照で、ポインタが指す先の値を読み書きする。 また、ポインタ型は *int*string のように、指し示す先の型を含めて表す。 ポインタ変数自体のサイズは環境依存でほぼ一定だが、指し示す先の値を何バイト読めばよいかを知るために型が必要になる。

構造体は、関連する複数の値を 1 つのデータ型としてまとめる仕組み。 氏名、年齢、性別、体重のように同じ対象に属するデータをバラバラの変数ではなく、設計図として定義できる。

要点

  • ポインタはメモリアドレスを保持する変数。
  • & はアドレス取得、* は間接参照。
  • ポインタ型には、指し示す先の型情報が必要。
  • 構造体は関連するデータをまとめるためのユーザー定義型。
  • 初学者が Go の基礎概念をイメージで理解するのに向く。

タグ

go #beginner #pointer #struct #interface