1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Golangのパッケージレベル変数と関数レベル変数の違い

Last updated at Posted at 2024-03-30

Golangでは、パッケージレベル変数と関数レベル変数は異なるスコープと目的を持ちます。

パッケージレベル変数:

  • スコープ:

パッケージレベル変数は関数の外、つまり関数の中ではなく、通常はGoソースファイルの一番上に宣言されます。
同じパッケージ内のすべての関数からアクセスできます。
パッケージがインポートされるときに初期化されます。

  • 初期化:

パッケージがロードされるときに初期化され、パッケージ内の関数が呼び出される前に初期化されます。
明示的な初期化が必要です。初期化されていない場合、ゼロ値が割り当てられます。

  • 使用法:

パッケージ全体で共有されるデータや設定などの値を保持するために使用されます。
同じパッケージ内の異なる関数間でデータを共有するのに役立ちます。

関数レベル変数:

  • スコープ:

関数レベル変数は関数内で宣言され、その関数内でのみアクセス可能です。
他の関数からはアクセスできません。

  • 初期化:

関数が呼び出されるたびに初期化されます。
初期化はオプションですが、初期化されていない場合、ゼロ値が割り当てられます。

  • 使用法:

関数内でのみ必要な一時的なデータを保持するために使用されます。
特定の関数のローカルスコープでのみアクセス可能であり、他の関数に影響を与えません。

変数定義の種類

  • var キーワードを使用した変数定義:

var キーワードを使用して変数を定義します。この方法では、変数の型を指定することができますが、初期値は与えられません。


var age int
var name string
var isStudent bool
  • 短い変数宣言(Short Variable Declaration) := :

短い変数宣言 := を使用して変数を定義および初期化します。この方法では、変数の型は右辺の値から推論されます。

age := 30
name := "John"
isStudent := true

ただし、この方法は関数内でのみ使用できます。

  • 明示的な型指定付きの変数定義:

変数の型を明示的に指定して変数を定義し、必要に応じて初期化します。

var temperature float64 = 25.5
var country string = "USA"
var (
	a, b int    = 5, 3
	c    string = "Hello"
)

この方法は、変数の型を明示的に指定する場合や、パッケージレベルの変数を定義する場合に使用されます。

  • ゼロ値(Zero Value):

変数が初期化されない場合、その変数には型に応じたゼロ値が割り当てられます。数値型のゼロ値は 0、文字列型のゼロ値は空の文字列 ""、ブール型のゼロ値は false です。

var num int    // num には 0 が割り当てられる
var text string  // text には空の文字列が割り当てられる
var flag bool   // flag には false が割り当てられる

例:

package main

import "fmt"

// パッケージレベル変数
var packageVar int = 100

func main() {
    // 関数レベル変数
    var localVar int = 50
    fmt.Println("Package-level variable:", packageVar)
    fmt.Println("Function-level variable:", localVar)
}

このコードでは、packageVar はパッケージレベルの変数であり、localVar は関数レベルの変数です。packageVarmain 関数の外で宣言されており、main 関数の内部である localVar とは異なるスコープを持っています。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?