はじめてのGo―シンプルな言語仕様,型システム,並行処理

第2章 基本文法―覚えやすいコンパクトな言語仕様

この記事を読むのに必要な時間:およそ 9.5 分

本章では,Goの基本的な文法について解説します。

序盤は1章で実行したhello worldのプログラムを振り返ってみましょう。

package main

import (
    "fmt"
)

func main() {
    fmt.Println("hello world")
}

mainパッケージ

Goのコードはパッケージの宣言から始まります。

package main

プログラムをコンパイルして実行すると,まずmainパッケージの中にあるmain()関数が実行されるため,ここに処理を記述しています。関数の詳細は後述します。

func main() {
}

インポート

importは,プログラム内にほかのパッケージを取り込むために使用します。

import (
    "fmt"
)

func main() {
    fmt.Println("hello world")
}

インポートしたパッケージ内へは,パッケージ名にドットを付けてアクセスできます。たとえば上記では,出力にfmtパッケージのPrintln()を使用しています。

複数パッケージの取り込み

複数のパッケージを取り込む場合は次のように縦に並べて記述します。

import (
    "fmt"
    "github.com/wdpress/gosample"
    "strings"
)

Goの標準パッケージはインストールしたGoの中に含まれているため自動でパスが解決され,それ以外のパッケージは1章で解説したようにGOPATH環境変数からパスを解決します。

オプションの指定

インポートするパッケージ名の前には,いくつかのオプションが指定できます。

package main

import (
    f "fmt"
    _ "github.com/wdpress/gosample"
    . "strings"
)

func main() {
    // fmt.Println()がf.Println()になり
    // strings.ToUpper()がToUpper()なっている
    f.Println(ToUpper("hello world"))
}

任意の名前(上記ではfを指定した場合は,プログラム内でのパッケージ名を変えることができます。

_を付けた場合は,インポートしたパッケージを使用しないことをコンパイラに伝えます。第1章で解説したように,Goはインポートして使用しないパッケージがあるとコンパイルエラーになります。上記の例ではgithub.com/wdpress/gosampleパッケージはインポートして使っていなかったので,_が付いていなかったらコンパイルエラーになります。

.を付けた場合は,使用時にパッケージ名が省略可能になります。

組込み型

さて,hello worldプログラムではhello worldという文字列を出力しましたが,この文字列はGoではstringという組込み型として扱われます。ほかにもGoには表1の組込み型があります。

表1 Goの組込み型

説明
uint88ビット符号なし整数
uint1616ビット符号なし整数
uint3232ビット符号なし整数
uint6464ビット符号なし整数
int88ビット符号あり整数
int1616ビット符号あり整数
int3232ビット符号あり整数
int6464ビット符号あり整数
float3232ビット浮動小数
float6464ビット浮動小数
complex6464ビット複素数
complex128128ビット複素数
byteuint8のエイリアス
runeUnicodeのコードポイント
uint32か64ビットの符号なし整数
int32か64ビットの符号あり整数
uintptrポインタ値用符号なし整数
errorエラーを表わすインタフェース

runeは,Unicodeのコードポイントを指します。実際は,ほかの言語で言うcharのように1文字を表すことに使用します。stringがダブルクオートでくくられるのに対し,runeはシングルクオートでくくられます。またバッククオートで囲むことで,複数行に渡るstring(ヒアドキュメント)を記述できます。

著者プロフィール

コメント

コメントの記入