ポインタや構造体を勉強する。

ポインタと言えばC言語が代表的ですが、Go言語でも使えます!

C言語から書きやすいとよく聞くGo言語ですが、Printf/Scanfに限らずC言語と共通する点が多く、私自身もC言語を長く触っている身としては入りやすいですね…

 

ポインタを使ってみる

試しにポインタを使ってみます。

一度実行してみてもらうと分かると思うのですが、

  • &オペレータはその変数(オペランド)へのポインタを引き出す
  • *オペレータはポインタの指す先の変数を指す

といった感じで、基本的にはC言語のポインタと変わりません。

因みに、オペレータ・オペランドという言葉をよく聞くのですが、日本語で表すと

  • オペレータ:演算子のこと。
  • オペランド:被演算子のこと。要は演算子の対象となる変数や値のこと。

といった感じです。個人的にはカタカナより日本語の方が理解しやすいので、演算子・被演算子と書いて欲しいですね()

因みに、初期値には nil、要は空ということです。

初期値の状態でポインタの値を引き出そうとするとエラーになるので注意してください。

 

構造体

構造体とは?

一言で表すと「1つもしくは複数の値をまとめて格納できる型」です!

上の言葉で連想すると配列も似た特性を持っている気がしますが、配列と違い、それぞれの値に異なる型を指定することが可能です。このとき、それぞれの変数をフィールド(またはメンバ)と呼びます。

 

構造体の使い方

まずは定義の方法です。

実際に定義するとこのようになります。

実際に変数に格納したりアクセスするにはこのように記述します。

さっきの宣言時の例と合わせるとこのようになります。

 

構造体をポインタでアクセス

以下のように構造体もポインタを使用してアクセスできます。

この辺りは冒頭で紹介したポインタの扱い方と同じです。

構造体も通常の変数のようにポインタでのアクセスが可能です。

 

初期値の割り当て

構造体の変数を宣言する際、必ずすべての値を初期化する必要はありません。

例えば、特定の値のみを指定して代入(Name:構文)したり、何も代入しなければ通常の変数と同じゼロ値が代入されます。

また、宣言時に & を付けることで、初めからポインタ変数へポインタを渡すことも可能です。

 

今回はポインタと構造体を勉強しました。

両方ともC言語と基本的な考え方は似ていて、CやC++を触ったことがあると使いやすい風に感じました。その中でも違いもあるので、言語毎の違いを混同しないようにしないといけませんね…

 

参考にした記事

A Tour of Go

オペレータ 【 operator 】 – IT用語辞典e-Words

構造体 – Wikipedia

今回のブログ曲

今回投稿中に聴いていた曲はこちら

カテゴリー: Go言語

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です