ホームページ  >  記事  >  バックエンド開発  >  Golang における配列の簡単な分析

Golang における配列の簡単な分析

青灯夜游
青灯夜游転載
2022-11-29 21:00:455445ブラウズ

この記事では Golang について説明し、Go 言語の基礎となる配列について説明します。

Golang における配列の簡単な分析

[プログラミング チュートリアルの推奨事項: プログラミング教育]

1. 配列定義:

配列は、同じデータ型の要素のコレクションです。 Go言語では宣言時から配列が決まり、使用中に配列メンバーを変更することはできますが、配列のサイズを変更することはできません。基本構文:

// 定义一个长度为3元素类型为int的数组a
var a [3]int

グループの長さは定数である必要があり、長さは配列型の一部です。一度定義すると長さを変更することはできません。

var a [3]int
var b [4]int
a = b //不可以这样做,因为此时a和b是不同的类型

配列は添字を通じてアクセスできます。添字は 0 から始まります。最後の要素の添字は len-1 です。アクセスは範囲外です。 (添字が法定範囲外) の場合、範囲外アクセスが発生し、パニックが発生します。

2. 配列の初期化

①配列を初期化する場合、初期化リストを使用して配列要素の値を設定できます。

func main() {
	var testArray [3]int                        //数组会初始化为int类型的零值
	var numArray = [3]int{1, 2}                 //使用指定的初始值完成初始化
	var cityArray = [3]string{"北京", "上海", "深圳"} //使用指定的初始值完成初始化
	fmt.Println(testArray)                      //[0 0 0]
	fmt.Println(numArray)                       //[1 2 0]
	fmt.Println(cityArray)                      //[北京 上海 深圳]
}

② 上記の方法に従って、指定された初期値が配列の長さと一致していることを確認します。一般に、初期値の数に基づいてコンパイラに配列の長さを推測させることができます。

func main() {
	var testArray [3]int
	var numArray = [...]int{1, 2}
	var cityArray = [...]string{"北京", "上海", "深圳"}
	fmt.Println(testArray)                          //[0 0 0]
	fmt.Println(numArray)                           //[1 2]
	fmt.Printf("type of numArray:%T\n", numArray)   //type of numArray:[2]int
	fmt.Println(cityArray)                          //[北京 上海 深圳]
	fmt.Printf("type of cityArray:%T\n", cityArray) //type of cityArray:[3]string
}

インデックス値を指定して配列を初期化することもできます

func main() {
	a := [...]int{1: 1, 3: 5}
	fmt.Println(a)                  // [0 1 0 5]
	fmt.Printf("type of a:%T\n", a) //type of a:[4]int
}

3. 配列の走査

配列のメソッドを走査するには 2 つの方法があります:

func main() {
	var a = [...]string{"北京", "上海", "深圳"}
	// 方法1:for循环遍历
	for i := 0; i < len(a); i++ {
		fmt.Println(a[i])
	}

	// 方法2:for range遍历
	for index, value := range a {
		fmt.Println(index, value)
	}
}

4. 多次元配列

Go 言語は多次元配列をサポートしています. ここでは例として 2 次元配列を取り上げます (配列は入れ子になっています)配列内)。

2 次元配列の定義

func main() {
	a := [3][2]string{
		{"北京", "上海"},
		{"广州", "深圳"},
		{"成都", "重庆"},
	}
	fmt.Println(a) //[[北京 上海] [广州 深圳] [成都 重庆]]
	fmt.Println(a[2][1]) //支持索引取值:重庆
}

2 次元配列の走査

func main() {
	a := [3][2]string{
		{"北京", "上海"},
		{"广州", "深圳"},
		{"成都", "重庆"},
	}
	for _, v1 := range a {
		for _, v2 := range v1 {
			fmt.Printf("%s\t", v2)
		}
		fmt.Println()
	}
}


输出:

北京	上海	
广州	深圳	
成都	重庆

注: 多次元配列 最初のレベル のみが ... を使用してコンパイラに配列の長さを推定させることができます

//支持的写法
a := [...][2]string{
	{"北京", "上海"},
	{"广州", "深圳"},
	{"成都", "重庆"},
}
//不支持多维数组的内层使用...
b := [3][...]string{
	{"北京", "上海"},
	{"广州", "深圳"},
	{"成都", "重庆"},

5。配列は値ですtype

配列は値型であり、代入とパラメータの受け渡しにより配列全体がコピーされます。したがって、コピーの値を変更しても、それ自体の値は変わりません。

func modifyArray(x [3]int) {
	x[0] = 100
}

func modifyArray2(x [3][2]int) {
	x[2][0] = 100
}
func main() {
	a := [3]int{10, 20, 30}
	modifyArray(a) //在modify中修改的是a的副本x
	fmt.Println(a) //[10 20 30]
	b := [3][2]int{
		{1, 1},
		{1, 1},
		{1, 1},
	}
	modifyArray2(b) //在modify中修改的是b的副本x
	fmt.Println(b)  //[[1 1] [1 1] [1 1]]
}

ヒント:

  • メモリは常に初期化されるため、配列では「==」、「!=」演算子がサポートされます。

  • [n]*T はポインタ配列を表し、*[n]T は配列ポインタを表します。

##End:

技術交換グループに参加する必要がある学生はWeChat#に私を追加できることをもう一度お知らせください fangdongdong_25、フロントエンド エンジニア コミュニケーション グループ に参加する必要がある場合は、「フロントエンド」に注意してください 、go バックエンド コミュニケーション グループに参加する必要がある場合、 、「バックエンドに行く」ことに注意してください

【関連する推奨事項:

Go ビデオ チュートリアル ]

以上がGolang における配列の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。