2
0

More than 3 years have passed since last update.

Go言語の似た概念を触る

Last updated at Posted at 2020-01-23

はじめに

本題に入る前に、前提となることを記述しておきます。

目的

目的は以下です。

  • Go言語を読んでいて、似た概念を読み間違えないようにするため

それだけです。

読者の対象

読者の対象は以下です。

  • プログラミング初心者
  • Go初心者
  • 軽くGo言語を使っている人

裏を返せば、例えば以下のような方は対象ではありません。

  • Go言語を体系的に理解したい方
  • 似た表現の実体を比較したい方、メモリの使い方を理解したい方

参考

おことわり

  • 少しずつ文を追加しています。
  • 初心者目線で「これとこれも紛らわしいから説明してくれ!」というものがあれば、連絡ください。

本題

ArraysとSlices

A Tour of Goを読んでいて、ArraysとSlicesは似ているなーと思ったのでまとめました。

Arraysは固定長、Slicesは可変長

宣言する形からしてもわかるように、Arraysは固定長でSlicesは可変長です。

Arrays/Slices 宣言 意味
Arrays var a [10]int 10個のintからなる配列a
Slices var b []int 個数は問わないスライスb

見分け方

[]の中に数字が入っているかどうかですね。
数字があればArrays、なければSlicesです。

外部パッケージ呼び出しと、構造体フィールドへのアクセス

仕事でGoのプログラムを読んでいて、???となりました。
どちらもドットを使っています。

外部パッケージ呼び出し

main.go
package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello, World!") //ここ!
}

fmt.Printlnとあるように、ドットを使っています。

参考:A Tour of Go>外部パッケージ呼び出し

構造体フィールドへのアクセス

main.go
package main

import "fmt"

type Vertex struct {
    X int
    Y int
}

func main() {
    v := Vertex{1, 2}
    v.X = 4 //ここ!
    fmt.Println(v.X)
}

構造体Vertexを型とする変数vについて、Xの値を4とする。
これを、ドットを用いてv.Xとしています。

参考:A Tour of Go>構造体のフィールド

見分け方

<importされているパッケージ>.*であれば外部パッケージ。
<構造体を型とする変数>.<構造体のフィールド>であれば、構造体フィールドへのアクセス、でよいでしょう。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0