1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【初心者向け】Goプログラムを手軽に書いて実行してみた

Last updated at Posted at 2019-05-23

Go初心者向けの投稿です。
まずはGo言語を始めるにあたっての簡単なコマンドとテストコードを書いて実行しています。

go run

「Hello,world!」をGoで書くと次のようになります。

main.go
package main

import (
  "fmt"
)

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

$go run hello.go

Goは基本的にコンパイルを前提としているがgo runコマンンドでビルドプロセスを隠蔽できます。便利ですね。

参照のないパッケージについて

Goでは使用していない不要なパッケージがimportされているとエラーになります。
これはプログラムにゴミを残さないためにも大切ですが、エラーになるのが面倒な場合は下記指定「アンダーバー」でバイパスが可能です。

import (
  _ "fmt"  // 参照されないパッケージを取り込む方法
)

go build

hoge.goファイルをコンパイルして実行ファイルを作成することが出来ます。
$ go build -o hoge hoge.go
ビルドに成功するとGoプログラムと同じディレクトリに実行ファイルが作成されます。

go run と go buildの違い

go rungo build もコンパイルして実行ファイルのの作成をしてくれるが、go run の場合go buildのようにカレントディレクトリ以下のすべてのファイルが読み込まれるわけではないです。

goの実行ファイルはgoファイルよりも容量が大きくなる

GoはOSによって提供される標準的なライブラリに依存されないようにするため、プログラムが必要とするパッケージを実行ファイルの中に組み込んでいます。
そのため容量は大きくなります。

パッケージとディレクトリ

Goでは「1つのディレクトリには1つのパッケージ定義のみ」という原則があります。
この原則に従わない状態でビルドを行うとエラーになります。

実際に動かしてみよう

スクリーンショット 2019-05-23 23.10.38.png
main.go
package main

import (
	"fmt"
	"./animals"
)

func  main() {
	fmt.Println(animals.CatCry())
	fmt.Println(animals.DogCry())
	fmt.Println(animals.RabitCry())
}
cat.go
package animals

func CatCry() string{
	return "nya---n"
}
dog.go
package animals

func DogCry() string{
	return "wanwan!!!"
}
rabit.go
package animals

func RabitCry() string {
	return "usagidayo--!!!"
}

簡単なファイルが用意できたらgo runで動かします!

$ go run main.go
nya---n
wanwan!!!
usagidayo--!!!

想定通りに動いてますね。

testの記載方法について

goには標準でパッケージの機能をテストするための機能が組み込まれています。

animals_test.go
package animals

import (
	"testing"
)

func TestCatCry(t *testing.T) {
	expect := "nya---n"
	actual := CatCry()

	if expect != actual {
		t.Errorf("%s != %s", expect, actual)
	}
}

testの実行

$ go test ./animals
ok      _/hello-go/animals    0.006s

okとなっているので成功しているのが解ります。
せっかくなのでコードを変えて失敗させてみます。

変更前:

expect := "nya---n"

変更後:

expect := "wawanwanda-"

変更したらバチーンとtestコマンドを実行します。

$ go test ./animals
--- FAIL: TestCatCry (0.00s)
    animals_test.go:12: wawanwanda- != nya---n
FAIL
FAIL    _/hello-go/animals    0.006s

FAILとなってテストが失敗しているのがわかります。どこで失敗しているのかも出ているので簡単に追えますね。

まとめ

はじめてGoに触れましたが、コマンドが豊富で記載も簡潔。開発者に優しい設計になっていますね。これからどんどん触ってどんどん投稿していきます。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?