ホームページ  >  記事  >  バックエンド開発  >  Go言語での変数宣言の方法は何ですか?

Go言語での変数宣言の方法は何ですか?

青灯夜游
青灯夜游オリジナル
2023-01-12 10:32:333068ブラウズ

変数の宣言方法は次のとおりです: 1. var を使用して変数を宣言し、変数のデータ型を示します。構文は「var 変数名 type = 式」です。2. 「:=」文字を使用して、 「変数名:=式」という構文で短い変数宣言をします。短い変数宣言を使用する場合、var キーワードと型情報を省略できます。変数のデフォルトの型は bool、rune、int、float64、complex128、または string です。

Go言語での変数宣言の方法は何ですか?

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

静的言語を学習する際の重要な機能は、動的言語とは異なります。それは、変数宣言です。

プログラミング言語のコンパイラやインタプリタは、変数が参照できるメモリ領域の境界をどのようにして知るのでしょうか?

動的言語と静的言語では処理方法が異なります:

  • 動的言語 (Python、Ruby など) のインタプリタは、次のことができます。実行時に変数に値を代入し、分析して変数の境界を自動的に決定します。また、動的言語では、実行時に変数にさまざまなサイズの境界を割り当てることができます。

  • 静的プログラミング言語は、この点で「エクスペリエンスが少し悪い」です。静的型付け言語コンパイラーは、変数の使用を許可する前に、変数の境界を明確に知っている必要がありますが、静的言語コンパイラーには、この情報を自動的に提供する機能がありません。この境界情報は、言語のユーザーが提供する必要があります。 , したがって、「変数」ステートメントがあります。変数宣言を通じて、言語ユーザーは変数の境界情報をコンパイラーに明示的に伝えることができます。特定の実装レベルでは、この境界情報は変数の type 属性によって与えられます。

Go 言語は静的プログラミング言語キャンプに属しているため、静的言語のこの要件に従います。つまり、変数は使用する前に宣言する必要があります。

[golang] 変数の宣言と初期化 var、:=、new()、make()

Go 言語にはさまざまな変数の宣言と初期化メソッドが用意されています。ここでは、それらを 1 つずつ説明することに重点を置きます。そして簡単なガイドを提供します。

ガイド

  • make() を使用して slice,# # を初期化します#マップチャンネル
  • ほとんどの場合、型が明確な場合は、
  • 短い変数宣言メソッド:=を使用します。
  • テキストを使用して変数を初期化し、型を指定する必要がある場合は、
  • var変数宣言メソッドを使用します。
  • ポインター変数が必要な場合を除き、
  • new() の使用は避けてください。

変数宣言方法

Go 言語では、

var を使用して変数を宣言し、変数の型を指定できます。データの。

	// 初始化整数变量,值为10。
	var v int = 10
	fmt.Println(v)
	// 输出: 10

	// 变量声明: 一个slice变量
	var vSlice []int = []int{1, 2, 3, 4}
	fmt.Println(vSlice, "type: ", reflect.TypeOf(vSlice).Kind())
	// 输出: [1 2 3 4] type: slice

	// 短变量声明: 一个map变量,指向的值为[]
	var vMap map[string]int = map[string]int{
		"a": 1,
		"b": 2,
	}
	fmt.Println(vMap)
	// 输出: map[a:1 b:2]

短い変数宣言

短い変数宣言 シンボル:

:=

短い変数が宣言された場合、変数のデフォルトの型は次のとおりです:

boolruneintfloat64complex128 または string

	// 短变量声明: 一个整数变量。
	sdvInt := 10
	fmt.Println(sdvInt, "type: ", reflect.TypeOf(sdvInt).Kind())
	// 输出: 10 type:  int

	// 短变量声明: 一个slice变量
	sdvSlice := []int{1, 2, 3, 4}
	fmt.Println(sdvSlice, "type: ", reflect.TypeOf(sdvSlice).Kind())
	// 输出: [1 2 3 4] type: slice

	// 短变量声明: 一个map变量,指向的值为[]
	sdvMap := map[string]int{
		"a": 1,
		"b": 2,
	}
	fmt.Println(sdvMap)
	// 输出: map[a:1 b:2]

new(T)

new (T) 機能:

    タイプに従ってメモリを割り当てる T
  • メモリを 0 に設定します
  • メモリ ポインタを返します
  • 	// 初始化一个整数指针变量,指向的值为0
    	var i3 *int = new(int)
    	fmt.Println(*i3)
    
    	// 初始化一个slice指针变量
    	var i4 = new([10]int)[0:5]
    	fmt.Println(i4, "type: ", reflect.TypeOf(i4).Kind())
    	// 输出: [0 0 0 0 0] type: slice
    
    	// 初始化一个map指针变量,指向的值为[]
    	var i5 *map[string]int = new(map[string]int)
    	fmt.Println(*i5)
    	// 输出: map[]
    
    	// 初始化一个chan指针变量,指向的值为nil
    	var i6 *chan int = new(chan int)
    	fmt.Println(*i6)
    	// 输出: nil

make()

make は、

slicemap を初期化するためにのみ使用されます。チャネル###。 <pre class="brush:js;toolbar:false;"> // make只能用于创建slice, map, channel // 切片类型(slice) makeSlice := make([]int, 5, 10) fmt.Println(makeSlice) // 输出: [0 0 0 0 0] // Map 类型 var makeMap map[string]int = make(map[string]int) fmt.Println(makeMap) // 输出: map[] // Channel 类型 var makeChan chan int32 = make(chan int32, 100) fmt.Println(makeChan) // 输出: 0xc000112000</pre>

完全なソース コード

package main

import (
	"fmt"
	"reflect"
)

func main() {

	// 初始化整数变量,值为10。
	var v int = 10
	fmt.Println(v)
	// 输出: 10

	// 变量声明: 一个slice变量
	var vSlice []int = []int{1, 2, 3, 4}
	fmt.Println(vSlice, "type: ", reflect.TypeOf(vSlice).Kind())
	// 输出: [1 2 3 4] type: slice

	// 短变量声明: 一个map变量,指向的值为[]
	var vMap map[string]int = map[string]int{
		"a": 1,
		"b": 2,
	}
	fmt.Println(vMap)
	// 输出: map[a:1 b:2]

	// 短变量声明: 一个整数变量。
	sdvInt := 10
	fmt.Println(sdvInt, "type: ", reflect.TypeOf(sdvInt).Kind())
	// 输出: 10 type:  int

	// 短变量声明: 一个slice变量
	sdvSlice := []int{1, 2, 3, 4}
	fmt.Println(sdvSlice, "type: ", reflect.TypeOf(sdvSlice).Kind())
	// 输出: [1 2 3 4] type: slice

	// 短变量声明: 一个map变量,指向的值为[]
	sdvMap := map[string]int{
		"a": 1,
		"b": 2,
	}
	fmt.Println(sdvMap)
	// 输出: map[a:1 b:2]

	// 初始化一个整数指针变量,指向的值为0
	var newInt *int = new(int)
	fmt.Println(*newInt)

	// 初始化一个slice指针变量
	var newSlice = new([10]int)[0:5]
	fmt.Println(newSlice, "type: ", reflect.TypeOf(newSlice).Kind())
	// 输出: [0 0 0 0 0] type: slice

	// 初始化一个map指针变量,指向的值为[]
	var newMap *map[string]int = new(map[string]int)
	fmt.Println(*newMap)
	// 输出: map[]

	// 初始化一个chan指针变量,指向的值为nil
	var newChan *chan int = new(chan int)
	fmt.Println(*newChan)
	// 输出: nil

	// make只能用于创建slice, map, channel
	// 切片类型(slice)
	makeSlice := make([]int, 5, 10)
	fmt.Println(makeSlice)
	// 输出: [0 0 0 0 0]

	// Map 类型
	var makeMap map[string]int = make(map[string]int)
	fmt.Println(makeMap)
	// 输出: map[]

	// Channel 类型
	var makeChan chan int32 = make(chan int32, 100)
	fmt.Println(makeChan)
	// 输出: 0xc000112000

}
[関連する推奨事項:

Go ビデオ チュートリアル

プログラミング教育 ]

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。