Go で「関数本体の外に非宣言ステートメントがあります」というエラーが発生するのはなぜですか?

Patricia Arquette
リリース: 2024-11-13 10:41:02
オリジナル
915 人が閲覧しました

Why Do I Get

Go の関数本体外の非宣言ステートメント

Go では、通常、関数本体の外で変数を宣言すると、「非宣言」が発生します。 -宣言文が関数本体の外にあります」エラー。これは、Go がスコープ ルールを厳密に適用し、適切なブロック内 (関数内など) で変数を宣言する必要があるために発生します。

慣用的なグローバル変数宣言

作成するには変更可能だが定数ではないグローバルにアクセス可能な変数。構文は次のとおりです。

var test = "This is a test"
ログイン後にコピー
  • 変数の宣言には var キーワードが使用されます。
  • 変数の名前 (テストこの場合) パッケージ内での可視性 (エクスポートされていない) を示すために小文字で始める必要があります。
  • = 記号は変数に値を割り当てます。

例:

package apitest

import (
    "fmt"
)

var test = "This is a test" // Globally accessible variable

func main() {
    fmt.Println(test)
    test = "Another value"
    fmt.Println(test)
}
ログイン後にコピー

詳しい説明

  • 関数内の変数の初期化: 関数内で変数を宣言し、後で := 演算子を使用して値を割り当てます。ただし、:= はグローバル変数宣言には無効です。
  • 型推論: Go は型推論をサポートしており、コンパイラーは初期値に基づいて変数の型を決定できます。
  • パッケージ レベル変数の変更: グローバルにアクセス可能な変数を含むパッケージ レベル変数は、同じ変数名を使用して関数内から変更できます (例: 提供されたコード スニペットのchangeTest(newVal)) .
  • Init 関数: 複雑なパッケージの初期化のために、Go は main() の前に自動的に実行される init 関数を提供します。パッケージの初期状態を設定するために使用できます。

以上がGo で「関数本体の外に非宣言ステートメントがあります」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート