Go言語の変数とは何ですか

青灯夜游
リリース: 2022-12-02 19:55:17
オリジナル
5665 人が閲覧しました

Go 言語では、変数はプログラムの実行中に変更 (変更) できる内容の量であり、変数はプログラムの基本単位であり、メモリ内のデータ格納スペースを表します。変数名で見つけることができます。変数の機能はユーザーデータを保存することであり、計算結果を保存したり、値を表現したりできるコンピューター言語の抽象的な概念です。

Go言語の変数とは何ですか

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

1. 概要

変数 (Variable) は、プログラムの実行中にコンテンツが変更 (修正) できる量です。基本単位はメモリ内のデータ記憶領域を表現したもので、変数値は変数名でわかります。

変数の機能はユーザー データを保存することであり、計算結果を保存したり、値を表現したりできるコンピューター言語の抽象的な概念です。

変数は、変数の識別子を通じて値を検索するプロセスです。変数のメモリ シミュレーションのデモンストレーション:

Go言語の変数とは何ですか

2. 定義: 宣言と初期化

var を使用して定義します。変数キーワード。その型を指定する必要があり、同時に初期化できます。初期化値が指定されていない場合は、型のデフォルト値が使用されます。構文は次のとおりです:

// 声明变量,未初始化(默认值初始化)
var name string
// 声明变量,特定值初始化
var user string = "Hank"
ログイン後にコピー

Go 言語の変数は宣言する必要がありますが、使用できますが、未定義の変数を直接使用することはできません。

3. 型のデフォルト値 (ゼロ値)

Go 言語の型のデフォルト値は次のとおりです: Integer と floatポイント変数のデフォルト値は 0 です。 文字列変数のデフォルト値は空の文字列です。 ブール変数のデフォルトは bool です。 スライス、関数、およびポインター変数のデフォルトは nil です。

4. 強い型付け

Go 言語は強く型付けされた言語であり、変数には型が必要であり、変数は特定の型のデータのみを格納できます。 。 [関連する推奨事項: Go ビデオ チュートリアル ]

5. 型導出

変数を定義するとき、初期値がvalue を使用する場合は、型の定義を省略でき、Go 言語はデータ自体から型を推定できます。構文は次のとおりです:

// 声明变量,特定值初始化,类型推导出user为字符串string型
var user = "Hank"
ログイン後にコピー

6. 短い宣言 (定義)

変数の定義を簡素化するには、演算子を使用します。 = 型導出を使用すると、変数の定義をすばやく完了できます。構文は次のとおりです:

user := "hank"
ログイン後にコピー

7. バッチ定義

var または := を使用して複数の変数を一度に定義できます。構文は次のとおりです:

var

var (
  v1 = 42
  v2 = "hank"
  )
也可以
var v1, v2 = 42, "hank"
ログイン後にコピー

:=

v1, v2 := 42, "hank"
ログイン後にコピー

コードのメンテナンスが簡単なため、var() 宣言ブロック構文を使用することをお勧めします。

8. バッチ割り当て

複数の変数を一度に割り当てます。 (短い定義に似ています。v1, v2, v3 := 42, "hank", false) 変数を定義した後、それらにバッチで値を代入します。定義関数はありません。構文は:

var (
  v1 int
  v2 int
)
// 批量赋值
v1, v2 = 42, 1024
ログイン後にコピー

この構文は通常、一度に複数の戻り値を受け取るために関数のバッチリターンで使用されます。構文は:

func main() {
  var (
    v1 int
    v2 int
  )
  // 调用函数,接收其返回值
  v1, v2 = getData()
}
// 返回两个值的函数
func getData() (int, int) {
  // 返回了两个值(假设42为最小值,1024为最大值)
  return 42, 1024
}
ログイン後にコピー

2 つの変数の値を交換すると非常に便利です:

var (
  v1 = 42
  v2 = 1024
)
// 交换
v1, v2 = v2, v1
ログイン後にコピー
#実行後、v1==1024、v2==42

9. 匿名変数

識別子 _ (アンダースコア) を持つ変数は、システムによって予約された匿名変数であり、代入後はすぐに解放され、匿名変数と呼ばれます。その関数は変数のプレースホルダーであり、変数に値の構造を割り当てます。通常、バッチ割り当て中に使用されます。たとえば、関数が複数の値を返し、その一部のみが必要な場合、必要がなければ _ を使用してスペースを占有します。 #10. 変数のスコープ

Go 言語の変数はブロックスコープです。ブロックは、関数、if/switch/for ステートメント、または独立した {} を含む、{} を使用して定義されたコード セグメントを指します。これらはすべてブロックです。ブロック内で定義された変数は、このブロック内でのみ使用できます。定義は、var または := で定義された変数を参照します。 Go 言語のスコープはカスケードです。つまり、内側のブロックが同じ名前の外側の変数を定義していない限り、内側のブロックは外側のブロックの変数に直接アクセスできます。デモンストレーションは次のとおりです:

func main() {
  var (
    v int
  )
  // 调用函数,仅仅需要第二个返回值,第一,三使用匿名变量占位
  _, v, _ = getData()
}
// 返回两个值的函数
func getData() (int, int, int) {
  // 返回3个值
  return 42, 1024, 2012
}
ログイン後にコピー

上面代码中: 在main()中,v2,v3被重新定义,则在main()中,v1是外部,而v2, v3是main函数局部的。 在main()内部的{}中,v3被重新定义,则在main()内部的{}中,v1是外部,而v2是main()定义的, v3是main()内部{}定义的的。

变量可以沿内部作用域向外部作用域查找变量的过程。

带有{}的语句,其中的变量也仅仅在内部有效,例如for,if,switch等,演示:

for i := 0; i < 10; i++ {
  fmt.Println(i)
}
fmt.Println(i)
// 会提示变量i未定义, undefined: i
ログイン後にコピー

注意i,是通过短声明在for内部定义的变量,仅仅在for内部有意义。

互不嵌套的{}见作用域不可见,不可互相访问。

func main() {
  {
    v := 42
  }
  {
    fmt.Println(v)
    // 会提示变量v未定义, undefined: v
  }
}
ログイン後にコピー

更多编程相关知识,请访问:编程教学!!

以上がGo言語の変数とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!