English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 基礎教程

Golang 制御文

Golang 関数 & メソッド

Golang 構造体

Golang スライス & 配列

Golang 文字列(String)

Golang ポインタ

Golang インターフェース

Golang 并行処理

Golang エラ(Error)

Golang その他の雑多

Go mainとinit関数

Go言語は、特別な用途の関数を2つ保持しています。これらの関数は、main()およびinit()関数。

main関数

Go言語で、mainパッケージは、実行可能プログラムと一緒に使用される特別なソフトウェアパッケージで、このpackageにはmain()関数。main()関数は、実行可能プログラムのエントリポイントとしての特別な関数です。引数も戻り値も持たない関数で、自動的に呼び出されます。main()関数が含まれていますので、明示的に呼び出す必要はありません。main()関数、かつそれぞれの実行可能プログラムにはpackage mainとmain()関数。

//メインパッケージの宣言
package main
//パッケージのインポート
import (
    "fmt"
    "sort"
    "strings"
    "time"
}
func main() {
    //スライスをソート
    s := []int{345, 78, 123, 10, 76, 2, 567, 5}
    sort.Ints(s)
    fmt.Println("ソートされたスライス: ", s)
    // インデックス値を検索
    fmt.Println("インデックス値が: ", strings.Index("w3codebox", "ks"))
    //現在のタイムスタンプを表示
    fmt.Println("タイムスタンプ: ", time.Now().Unix())
}

出力:

ソートされたスライス:  [2 5 10 76 78 123 345 567}
インデックス値が:  -1
タイムスタンプ:  1593335332

init()関数

init()関数はmain関数のように、引数も戻り値も持たない関数です。各パッケージにこの関数があり、パッケージを初期化する際にこの関数が呼び出されます。 この関数は暗黙的に宣言されているため、どこからも参照することができず、同じプログラム内で複数のinit()関数を作成できます。それらは作成順に実行されます。 プログラムのどこにでもinit()関数を作成できますが、それらはアルファベット順のファイル名順に呼び出されます。 init()関数内に文を置くことができますが、常にmain()関数の前に実行する必要がありますので、main()関数に依存しません。   init()関数の主な目的は、グローバルスコープ内で初期化できないグローバル変数を初期化することです。

package main 
  
import "fmt"
  
//複数のinit()関数 
func init() { 
    fmt.Println("Welcome to init() function") 
} 
  
func init() { 
    fmt.Println("Hello! init() function") 
} 
  
func main() { 
    fmt.Println("Welcome to main() function") 
}

出力:

Welcome to init() function
Hello! init() function
Welcome to main() function