PAGE TOP

取り組み

印刷する

Go言語《その4》

プログラムの構成と実行

さぼ郎
パッケージ

何らかのパッケージを宣言するのだそうです。しかし、それは一つだけで、そのパッケージにすべての要素が含まれるということらしいです。

package main

import (
    "fmt"
)

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

hello.go

「fmt」というパッケージは文字列の入出力に便利な機能がまとめられている。

インポートしても使われないパッケージを宣言しておくとコンパイルの際にエラーになる

>go build -o hello.exe hello.go

これで、exeが作られます。

package main

import (
    "fmt"
    "./animals"
)

func main() {
    fmt.Println(animals.ElephantFeed())
    fmt.Println(animals.MonkeyFeed())
    fmt.Println(animals.RabbitFeed())
}

animals.go

この例では文字列操作の「fmt」のほかに、相対パスで「animals」というサブフォルダを指定しています。


package animals

func ElephantFeed() string {
    return "Grass"
}

animals/elephant.go

作ったパッケージである「animals」は、サブフォルダの名称も「animals」で統一する。

パッケージは同一名称にして複数に分割することも可能。
func ElephantFeed() string

関数のあとに書かれている「string」が何者かの説明はない。

今度は「build」して「EXE」を作るのではなく、単に実行するだけの「run」というのを使ってみる。

>go run main.go

コマンドプロンプト

とすると、中央部に、
[0x7FFE822C2B00] ANOMALY : meaningless REX prefix used
[0x7FFE85B3DDA0] ANOMALY : use of REX.w is meaningless (default operand size is 64)
のような警告が出ています。

ネットで調べても、パッとした解決方法が書かれていません。ウィルスセキュリティ(あるいはウィルスバスター)を止めたら出なくなったというような情報があって、全部の検査を無効にしたら、確かに出なくなったので、この辺りが犯人と思います。

そのうち、ソースネクストのサイトで対処法を調べます。ソースネクストのイメージキャラクターはフリンで有名になったベッキーから剛力彩芽に代わっています。ヨドバシに行くとエスカレータのサイドに剛力さんが笑っています。ベッキーはお尻を蹴られて泣いてます。

>go build

とすると、カレントディレクトリの名前で「zoo.exe」が作られます。

そのほかに、「main.go」が置かれたディレクトリに、ほかの「go」ファイルを置いても、無視されますが、

>go build

とするか、対象とする「go」ファイルの名称を列記してコンパイルすれば、EXEが作られます。

ここまでのまとめ

Cほど、ルーズではないけれど、VBAほどには厳密でもないという感じでしょうか?

ここまでの説明では、処理を作るだけなら「Go」であるメリットは、WindowsとMACとLinuxで、それぞれコンパイルすると動くという程度でしかありません。

ここから先は、Go言語の基本ということになっていきます。Go言語でなければならないとするメリットを考えながら先に進みます。今時の言語なら、Windows、MAC、Linuxだけでなく、スマホなどにも対応していてくれると使い道が広がりそうです。

不可欠なのはGUI、及びデータベースへの接続性などだと思います。

キーワード