Go 言語では、変数はプログラムの実行中に変更 (変更) できる内容の量であり、変数はプログラムの基本単位であり、メモリ内のデータ格納スペースを表します。変数名で見つけることができます。変数の機能はユーザーデータを保存することであり、計算結果を保存したり、値を表現したりできるコンピューター言語の抽象的な概念です。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
1. 概要
変数 (Variable) は、プログラムの実行中にコンテンツが変更 (修正) できる量です。基本単位はメモリ内のデータ記憶領域を表現したもので、変数値は変数名でわかります。
変数の機能はユーザー データを保存することであり、計算結果を保存したり、値を表現したりできるコンピューター言語の抽象的な概念です。
変数は、変数の識別子を通じて値を検索するプロセスです。変数のメモリ シミュレーションのデモンストレーション:
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
9. 匿名変数
識別子 _ (アンダースコア) を持つ変数は、システムによって予約された匿名変数であり、代入後はすぐに解放され、匿名変数と呼ばれます。その関数は変数のプレースホルダーであり、変数に値の構造を割り当てます。通常、バッチ割り当て中に使用されます。たとえば、関数が複数の値を返し、その一部のみが必要な場合、必要がなければ _ を使用してスペースを占有します。 #10. 変数のスコープ Go 言語の変数はブロックスコープです。ブロックは、関数、if/switch/for ステートメント、または独立した {} を含む、{} を使用して定義されたコード セグメントを指します。これらはすべてブロックです。ブロック内で定義された変数は、このブロック内でのみ使用できます。定義は、var または := で定義された変数を参照します。 Go 言語のスコープはカスケードです。つまり、内側のブロックが同じ名前の外側の変数を定義していない限り、内側のブロックは外側のブロックの変数に直接アクセスできます。デモンストレーションは次のとおりです:上面代码中: 在main()中,v2,v3被重新定义,则在main()中,v1是外部,而v2, v3是main函数局部的。 在main()内部的{}中,v3被重新定义,则在main()内部的{}中,v1是外部,而v2是main()定义的, v3是main()内部{}定义的的。 变量可以沿内部作用域向外部作用域查找变量的过程。 带有{}的语句,其中的变量也仅仅在内部有效,例如for,if,switch等,演示: 注意i,是通过短声明在for内部定义的变量,仅仅在for内部有意义。 互不嵌套的{}见作用域不可见,不可互相访问。 更多编程相关知识,请访问:编程教学!!func main() {
var (
v int
)
// 调用函数,仅仅需要第二个返回值,第一,三使用匿名变量占位
_, v, _ = getData()
}
// 返回两个值的函数
func getData() (int, int, int) {
// 返回3个值
return 42, 1024, 2012
}
for i := 0; i < 10; i++ {
fmt.Println(i)
}
fmt.Println(i)
// 会提示变量i未定义, undefined: i
func main() {
{
v := 42
}
{
fmt.Println(v)
// 会提示变量v未定义, undefined: v
}
}
以上がGo言語の変数とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。