mem. golangに入門してみた時にやったこと


golangを触ってみる際に個人的にやったことを備忘録として残しておく。

主にやったこと

  • A Tour of Go を少し触る
  • MAC環境にAtomでGolangの開発環境を作る

A Tour of Go

基本中の基本?なのか、「Go 入門」などでググるとだいたいの人がこの " A Tour of Go "を読んだ後にxxしました。とゆーてるので、ひとまずここから始めてみることに。

変わっているな、と思った点だけ少しメモ。(そもそも他の言語もそんなに詳しくないので違いはあまりわからないが。。)

  • Stacking defers
    • defer へ渡した関数が複数ある場合、その呼び出しはスタック( stack )されます。 呼び出し元の関数がreturnするとき、 defer へ渡した関数は LIFO(last-in-first-out) の順番で実行されます。
    • 実行はされるが呼び出し順序が少し違うとのこと
  • Pointers
    • 懐かしのポインタが存在。ただ、Cとは違ってポインタ演算はないとのこと。
  • Arrays
    • 配列はあります。
    • var a [10]int
    • こんな感じで、配列数の後ろに型名を宣言
    • そして、配列の要素数は変えられないらしい
  • Slices are like references to arrays
    • sliceというもので配列の一部を表現
    • a[1:4]でa配列の1番目〜3番目までの要素を参照できる。
    • sliceの一部を更新すると、元の配列が更新される!!
func main() {
    names := [4]string{
        "John",
        "Paul",
        "George",
        "Ringo",
    }
    fmt.Println(names)

    a := names[0:2]
    b := names[1:3]
    fmt.Println(a, b)

    b[0] = "XXX"
    fmt.Println(a, b)
    fmt.Println(names)
}

上みたいに書くとこうなる。

[John Paul George Ringo]
[John Paul] [Paul George]
[John XXX] [XXX George]
[John XXX George Ringo]

A Tour of Goはこの後もかなり続きそう。。
性格的に、やりながら覚える派なので、一旦ここまでにして何か作りたいところ。
ということで、開発環境のセットアップを行う。

開発環境のセットアップ for MAC OS

ググるといろいろな環境、IDEなどある模様。
Visual Studio Codeをおすすめしているサイトもあったが、今回はAtomで設定をする。
ここをみると、VSCとAtomで大差はなさそうだったので、最近エディタとして使い始めたAtomになれることも視野に。

私の環境

OS: OS X Yosemite 10.10.5

Homebrew,Atomはインストール済み

やること

ここを参考にいろいろ入れていく。

  • goenvのインストール
  • Goのインストール
  • $GOHOMEの設定
  • 依存パッケージのインストール
  • Atomの関連パッケージインストール
  • 動作確認

開発環境インストール

goenvのインストール

shellで以下を実行

$ brew install goenv

.bash_profileに以下を追記

# for goenv
export PATH="$HOME/.goenv/bin:$PATH"
eval "$(goenv init -)"

Goのインストール

コマンドでインストール可能なGoのバージョンを確認

$ goenv install -l
Available versions:
  1.2.2
  1.3.0
  1.3.1
 (略)
  1.11beta2
  1.11beta3
  1.11rc1
  1.11rc2
  1.11.1
  1.11.2
  1.11.3
  1.11.4
  1.12beta1

ん。現在(2019年5月2日時点)での最新安定版は1.12.4らしいのだが、見当たらない。
ひとまず、1.11.4を入れることに。

$ goenv install 1.11.4
Downloading go1.11.4.darwin-amd64.tar.gz...
-> https://dl.google.com/go/go1.11.4.darwin-amd64.tar.gz
Installing Go Darwin 64bit 1.11.4...
Installed Go Darwin 64bit 1.11.4 to /Users/ken/.goenv/versions/1.11.4
$ goenv global 1.11.4

確認。バージョンがでればOK

$ source ~/.bash_profile
$ go version
go version go1.11.4 darwin/amd64

GOHOMEの設定

Go言語では、ワークスペースというディレクトリ下で開発作業を行ないます。
このディレクトリ下に、ソースコード、外部ライブラリー、コンパイル済み実行ファイルなど、
開発に必要なものから出力まで、全てが格納されます。

とのことなので、設定する。

$ pwd
/Users/ken/Work
$ mkdir go
$ vi ../.bash_profile
# for golang
export GOPATH=$HOME/Work/go
export PATH=$PATH:$GOPATH/bin

source ~/.bash_profileを忘れずに。

依存関係のあるパッケージをインストール

$ go get golang.org/x/tools/cmd/goimports
$ go get github.com/nsf/gocode
$ go get github.com/rogpeppe/godef
$ brew install go-delve/delve/delve

atom関連パッケージをインストール

$ apm install go-plus
$ apm install godef

動作確認

作業用のディレクトリを作る

$ mkdir $GOPATH/src/test

作ったディレクトリに以下の内容でAtomからファイルを開き、test.goを作る

package main

import "fmt"

func main() {
  fmt.Println("Test")
}

ファイルを保存をするとコンパイルが走り、以下のようなメッセージが出る。

?       test    [no test files]

Done

コマンドラインから以下を実行

$ go run test.go
Test

動いた!

以上で完了。