ホームページ > バックエンド開発 > Golang > Go 言語の配列の基本を理解するのに役立つ記事

Go 言語の配列の基本を理解するのに役立つ記事

リリース: 2023-07-19 16:40:23
転載
1066 人が閲覧しました

配列とは

私の要約:ブロックを指す変数連続、長さ 、同じタイプ 思い出の一枚。

Go 言語の配列の基本を理解するのに役立つ記事#配列の定義方法

1

var 变量名 [元素个数]元素类型

ログイン後にコピー

例:

1

2

3

4

5

6

package main

 

func main() {

    //声明一个name_list数组,长度为100,里面只能放字符串

    var name_list [100]string

}

ログイン後にコピー

注:

##

1

2

3

4

var 变量名 [元素个数]元素类型 等同于 var 变量名 变量类型

所以

var name1 [3]int != var name2 [4]int

因为变量类型是不一样,不可以直接进行赋值

ログイン後にコピー

数组初始化

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

package main

 

import "fmt"

 

func main() {

    //方式一,声明不赋值

    //var name_list [10]int

    //fmt.Println(name_list) //结果:[0 0 0 0 0 0 0 0 0 0] 声明不赋值,int类型默认是0,其他类型也有默认值

    //

    //方式二, 声明没有赋值完

    //var name_list [10]int = [10]int{1, 3}

    //fmt.Println(name_list) //结果:[1 3 0 0 0 0 0 0 0 0],没有赋值完的,其他仍然是默认值

 

    //方式三,声明完完全赋值

    //var name_list = [3]int{1, 6, 10} //使用类型推断方式,同上

    //fmt.Println(name_list)           //结果:[1 6 10],每个都有值,没啥可说的

 

    //方式四,自动推断个数

    //var name_list = [...]int{1, 2, 4, 5, 19} //...表示自动推断个数,不会存在过多或者过少

    //fmt.Println(name_list)                   //结果:[1 2 4 5 19]

 

    //方式五,指定索引方式赋值,用的很少

    var name_list = [...]int{1: 66, 4: 11} //下标1赋值为66,下标4赋值11,其他默认值

    fmt.Println(name_list)                 //结果:[0 66 0 0 11]

}

ログイン後にコピー

数组遍历

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

package main

 

import "fmt"

 

func main() {

    var name_list = [...]string{"张三""李四""王五""小刘"}

    //方式一,普通for遍历

    //for i := 0; i < len(name_list); i++ {

    //fmt.Println(name_list[i])

    //}

 

    //方式二,for range方式

    for index, name := range name_list {

        //index是每个的下标,name是值

        fmt.Println(index, name)

  }

}

ログイン後にコピー

多维数组

二维数组

通常情况下,二维数组基本够用,最多三维数组,再套娃就完犊子了。

定义一个二维数组

1

2

3

4

5

6

7

8

9

10

11

12

13

14

package main

 

import "fmt"

 

func main() {

    //定义一个三行两列的一个数组

    var student_list = [3][2]string{

        // 列     列

        {"张三""李四"}, //行

        {"王五""小刘"}, //行

        {"小七""王八"}, //行

}

    fmt.Println(student_list)

}

ログイン後にコピー

循环二维数组

同理,定义一个二维数组需要两层,循环也需要两层。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

package main

 

import "fmt"

 

func main() {

    //定义一个三行两列的一个数组

    var student_list = [3][2]string{

        // 列     列

        {"张三""李四"}, //行

        {"王五""小刘"}, //行

        {"小七""王八"}, //行

}

    //方式一,普通for循环

    //for i := 0; i < len(student_list); i++ {

    ////fmt.Println(student_list[i])//每行

    ///*

    //      [张三 李四]

    //      [王五 小刘]

    //      [小七 王八]

    //*/

    //for j := 0; j < len(student_list[i]); j++ {

    //      //每列

    //      fmt.Println(student_list[i][j])

    //}

    //}

 

    //方式二,for range

    for _, v := range student_list {

        //fmt.Println(v) //每行

        /*

            [张三 李四]

            [王五 小刘]

            [小七 王八]

        */

        for _, b := range v {

            //每列

            fmt.Println(b)

        }

  }

}

ログイン後にコピー

多维数组是否可以长度推导

代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

package main

 

import "fmt"

 

func main() {

    //定义一个三行两列的一个数组

    var student_list = [...][...]string{

        // 列     列

        {"张三""李四"}, //行

        {"王五""小刘"}, //行

        {"小七""王八"}, //行

}

    fmt.Println(student_list)

}

ログイン後にコピー

报错

Go 言語の配列の基本を理解するのに役立つ記事

似乎是不可以的,那我只用第一层试试呢。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

package main

 

import "fmt"

 

func main() {

  //定义一个三行两列的一个数组

  var student_list = [...][2]string{

    // 列     列

    {"张三""李四"}, //行

    {"王五""小刘"}, //行

    {"小七""王八"}, //行

  }

  fmt.Println(student_list)

}

ログイン後にコピー

Go 言語の配列の基本を理解するのに役立つ記事

注:可以得出结论,在第一层时,是可以实现长度自动推导的。

以上がGo 言語の配列の基本を理解するのに役立つ記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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