基本特性

  • 格式: var Name [n]<type>,n>0 如: var a [10]int 表示,定义一个长度为10,元素类型为int性的数组

  • 数组长度: 长度(len)也是数组类型的一部分,因此具有不同长度的数组为不同的类型。 如var a [2]int != var a [3]int

  • 注意区分指向数组的指针和指针数组

    package main
    
    import "fmt"
    
    func main() {
    // 指向数组的指针:变量是指针
    a := [...]int{9:1} //定义一个变量a的数组(长度为10,第10个元素为1) var p *[10]int = &a //定义一个p的变量,类型为指针 //指针数组:变量是数组,元素是指针(内存地址)
    x, y := 1, 2
    b := [...]*int{&x, & y} fmt.Print(p)
    fmt.Print(b)
    } print (p)
    print (b)
    /*输出结果:
    p---> &[0 0 0 0 0 0 0 0 0 1]
    b---> [0xc04200c0a8 0xc04200c0c0]
    */
  • 数组在Go中属于值类型

  • 数组之间可以使用 ==!=进行比较,但不可以使用<>,比较是否相等,必须比较长度,类型,元素

    // 可以使用==和!=对两个数组进行比较
    package main
    import (
    "fmt"
    )
    func main() {
    a := [2]int{1, 2}
    b := [2]int{1, 2}
    c := [2]int{1, 3}
    fmt.Println(a == b) //判断两个数组是否相同
    fmt.Println(a == c) //判断两个数组是否相同
    }
    /*输出
    a==b ----> true
    a==c ----> false
    */
  • 可以使用new类创建数组,此仿佛返回一个指向数组的指针(内存地址)

    package main
    import (
    "fmt"
    )
    func main() {
    a := [5]int{}
    a[1] = 2 //设定数组第二个元素的值为2
    fmt.Println(a)
    p := new([5]int) //new方法创建一个数组,返回的是一个数组的指针
    fmt.Println(p)
    p[1] = 2
    fmt.Println(p) //数组的指针赋值后,可以达到同样的效果
    }
    /*输出
    a--->[0 2 0 0 0]
    p--->[0 0 0 0 0]
    p--->&[0 2 0 0 0]
    */
  • 支持多维数组:

    //多维数组:类似python中的嵌套数列
    package main
    import "fmt"
    func main() {
    a := [2][3]int{
    {1, 1, 1},
    {2, 2, 2}} //大括号必须放在数组结束的同一层
    fmt.Println(a) b := [...][3]int{ //当不知道到底是几维数组时,可以使用...,但是,元素个数不可以使用...
    {1: 2}, //一维数组,第2个元素为2
    {2: 1}} //二维数组:第三个元素为1
    fmt.Println(b) c := [...][4]int{
    {3: 3},
    {1: 0},
    {2: 2}}
    fmt.Println(c)
    } /*输出
    a---> [[1 1 1] [2 2 2]]
    b---> [[0 2 0] [0 0 1]]
    c---> [[0 0 0 3] [0 0 0 0] [0 0 2 0]]
    */
  • go实现冒泡排序:

    //冒泡排序
    package main
    import "fmt" func main() {
    a := [...]int{5, 2, 3, 1, 6, 8}
    fmt.Println(a)
    num := len(a)
    for i := 0; i < num; i++ {
    for j := i + 1; j < num; j++ {
    if a[i] < a[j] {
    //temp := a[i]
    a[i] = a[j]
    a[j] = a[i] //temp
    }
    }
    }
    fmt.Println(a)
    } /*输出结果
    a---> [5 2 3 1 6 8]
    a---> [8 6 5 3 2 1] //从大到小排序
    */

    代码解释如下(6-14行):

    1. 定义一个一维数组,并确定每个元素的值
    2. 输出原始数组
    3. 通过len函数确定数组的长度 num
    4. for 循环,从0开始遍历数组的每一个索引,直到遍历完最后一个元素
    5. 从数组的第二个索引开始遍历,直到遍历完所有的元素
    6. 通过索引取值,比较相邻两个元素的大小,如果后一个元素的值大于前一个索引值(倒序)
    7. 将前一个元素的值赋值给变量temp(临时值)
    8. 将数组前一个元素的值与后一个元素的值互换位置
    9. 遍历完所有的元素后,最大的值是第一个元素

golang基础--Array数组的更多相关文章

  1. GoLang基础数据类型--->数组(array)详解

    GoLang基础数据类型--->数组(array)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Golang数组简介 数组是Go语言编程中最常用的数据结构之一.顾名 ...

  2. Java Script基础(八) Array数组对象

    一.Array数组 JavaScript中的数组也是具有相同数据类型的一个或者多个值得集合.用法和Java中的数组类似. Array对象的常用属性和方法: 属性: length:获取数组的长度: 方法 ...

  3. GoLang基础数据类型-切片(slice)详解

    GoLang基础数据类型-切片(slice)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数组的长度在定义之后无法再次修改:数组是值类型,每次传递都将产生一份副本.显然这种数 ...

  4. Golang 基础之基础语法梳理 (二)

    大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第二章节 Golang 基础之基础语法梳理 (一) Gol ...

  5. Golang基础教程

    以下使用goland的IDE演示,包含总计的golang基础功能共20个章节 一.go语言结构: 二.go基础语法: 三.变量 四.常量 五.运算符 六.条件语句 七.循环 八.函数 九.变量作用域 ...

  6. 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算

    http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...

  7. [.net 面向对象编程基础] (17) 数组与集合

    [.net 面向对象编程基础] (17) 数组与集合 学习了前面的C#三大特性,及接口,抽象类这些相对抽象的东西以后,是不是有点很累的感觉.具体的东西总是容易理解,因此我们在介绍前面抽象概念的时候,总 ...

  8. PHP基础 之 数组(一)

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  9. golang基础知识之encoding/json package

    golang基础知识之json 简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.可以去json.org 查看json标准的清晰定义.json pack ...

随机推荐

  1. mysql 循环插入

    在mysql添加测试数据,想和mssql一样用循环实现,发现不管怎么样都执行失败 经查询发现mysql不支持匿名块,只能先创建出一个存储过程,执行,然后删除 CREATE PROCEDURE test ...

  2. 如何轻松学习C语言编程!

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  3. 启动redis一闪就关

    解决方法:1-win+R 打开命令行2-cd至redis目录,例如 D:\redis>3-输入 redis-server.exe redis.windows.conf观察是否如图1:至此,已成功 ...

  4. Python数据模型建立

    基本结构AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 pri ...

  5. c# 求两个数中最大的值

    1.三元运算符: class Program { static void Main(string[] args) { ,); Console.WriteLine("最大数:{0}" ...

  6. 【Selenium专题】高亮显示页面元素

    高亮显示页面元素主要用到Selenium中使用js的知识点,最常用的是检查元素定位是否正确.此外,实现js的调用大大增强了Selenium的功能.以下是调试通过的案例: import org.open ...

  7. RAID 介绍

    介绍 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨 ...

  8. 状压DP学习笔记

    有的时候,我们会发现一些问题的状态很难直接用几个数表示,这个时候我们就会用到状压dp啦~~. 状压就是状态压缩,就是讲原本复杂难以描述的状态用一个数或者几个数来表示qwq.状态压缩是一个很常用的技巧, ...

  9. kali linux之Bdfproxy

    Bdfproxy(mitmproxy) 基于流量劫持动态注入shellcode(arp欺骗,dns欺骗,流氓ap) 步骤: 开启流量转发---------sysctl -w net.ipv4.ip_f ...

  10. jqury表单验证

    结合天天生鲜的用户注册页面,学习验证表单js register.js--表单验证源码 $(function(){ var error_name = false; var error_password ...