热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

golang数组切片和字典

golang语言的数组切片和字典package mainimport (    fmt)func main(){    定长

golang语言的数组 切片和字典

package main
import (
    "fmt"
)

func main(){
    //定长为数组 不定长为切片   
    //数组 var a[10] int
    //切片 var a[] int

    var a[10] int //定义一个数字长度为10,存储int类型
    a[0] = 10   // 存储
    a[1] = 20
    a[2] = 30
    a[3] = 40
    fmt.Println(a[0],a[1],a[2],a[3])  //通过序列打印
    fmt.Println(a)                    //打印整个数组,因为定义长度为10,而我们只存了4个,所有后面的部分将以零值填充。
    // 运行结果

    10 20 30 40
    [10 20 30 40 0 0 0 0 0 0]
    //初始化并赋值     
    num := [5]int{1,2,3,4,5}  //初始化并赋值
    fmt.Println(num)
    
    //数组遍历
    for i,value := range num{  //索引和值
        fmt.Println(value,i)
    }
    
    //数组定义时可不定义切片大小
    sliceOne := []int{1,2,3,4,5}
    fmt.Println(sliceOne[0],sliceOne[1],sliceOne[2])
    
    //通过开始索引和结束索引创建一个新的切片
    sliceTwo := sliceOne[1:3]  //返回sliceOne中索引1到索引3,但不包含3
    fmt.Println(sliceTwo)  //运行结果:[2 3]
    
    //可省略开始索引,省略表示从索引0开始
    fmt.Println(sliceOne[:3]) //返回索引0-索引3,不包含3
    
    //可省略结束索引,省略表示直到最后一个
    fmt.Println(sliceOne[1:]) //打印索引1到最后,全部被打印出来 运行结果:[2 3 4 5]

    //同事省略开始和结束表示复制全部切片
    fmt.Println(sliceOne[:])
    
    //使用make初始化并设定长度与容量
    sliceThree := make([]int,5,10)//表示初始化一个切片,长度为5,最大容量为10,即在内存中申请了能放置10个长度的空间,这样在有新元素插入的时候就不用再动态分配空间提高效率。
    fmt.Println(sliceThree) //运行结果:[0 0 0 0 0]
    
    //使用len 和cap 查看切片的长度和容量
    fmt.Println(len(sliceThree)) 
    fmt.Println(cap(sliceThree))//运行结果:5 10
    
    //使用append来追加元素
    sliceThree = append(sliceThree,2,3,4)
    fmt.Println(sliceThree) //运行结果:[0 0 0 0 0 1 2 3 4]
    //多维数组
    var a [2][3]int = [...][3]int{{1,2,3},{4,5,6}}
    
    // 注意:多维数组只有第一层可使用[...]里面的都不可以
    
    //切片合并
    var a = []int{1,2,3}
    var b = []int{4,5,6}
    a = append(a,b...)
 
     // 切片容量的扩展
     * 每次只追加一个元素,每一次都是上一次的2倍
     * 追加的超过原来容量的1倍,就等于原来的容量+扩容元素个数的最接近的偶数 
     * 如果切片的容量大于了1024,后续就每次扩容0.25倍 ?
    //排序
    排序操作主要都在sort包中,导入就可以使用了。
    import sort
    sort.Ints #对整数进行排序
    sort.Strings #对字符串进行排序
    sort.Float64s #对浮点数排序
 
    //查找
    sort.SearchInts(a []int, b int) 从数组a中查找B,查找时会先进行排序然后在查找,返回下标 index
    sort.SearchFloats(a []float64, b float64)
    sort.SearchStrings(a p[]string,b string)
    
    
    // 字典map
    // 使用make来创建map 
    //声明时不会分配内存的,需要用make初始化才能分配内存进行操作
    m := make(map[string]int) //定义建值为字符串,值为整型
    m["first"] = 1
    fmt.Println(m["first"]) //运行结果:1
    m["first"] = 2
    fmt.Println(m["first"]) //运行结果:2    
    //使用len获取map长度
    fmt.Println(len(m)) //运行结果:1
    
    //检查map中是否包含某个建值
    v,ok :=m["third"] //如果包含建值third那么,v等于third对应的值,ok为true,否则v为零值,ok为false
    fmt.Print(v,ok) //运行结果:0 false
    
    //delete删除map中的建值对
    delete(m,"first")
    fmt.Println(m) 
     
    //创建的时候初始化
    var mp = map[string]int{
        "first" : 1,
        "second" : 2,
    }
    
    //字典嵌套
    outer := map[string]map[string]int{
        "inner1":map[string]int{
            "first":1,
            "second":2,
        }
        "inner2":map[string]int{
            "first":3,
            "second":4,
        }        
    }    
}



推荐阅读
  • 认真一点学 Go:18. 并发
    收录于《Go基础系列》,作者:潇洒哥老苗。>>原文链接学到什么并发与并行的区别?什么是Goroutine?什么是通道?Goroutine如何通信?相关函数的使用?sel ... [详细]
  • 按照之前我对map的理解,map中的数据应该是有序二叉树的存储顺序,正常的遍历也应该是有序的遍历和输出,但实际试了一下,却发现并非如此,网上查了下,发现从Go1开始,遍历的起始节点就是随机了,当然随机 ... [详细]
  • DFS基本概念步骤优缺点典型例题递推基本概念直接或者间接调用自身的算法称为递归算法一般数据n ... [详细]
  • 题目链接:杭电多校7-VirtualJudgevjudge上题目显示的有问题,我下面附上官方题目:样例输入:32201 ... [详细]
  • 题意给出一个长度为n的序列,有一些位置可以放任意的数,问最长上升序列的长度。n ... [详细]
  • Whatisthefastest(parallel?)waytofindasubstringinaverylongstringusingbitwiseoperator ... [详细]
  • LwIP系列内存管理(堆内存)详解
    一、目的小型嵌入式系统中的内存资源(SRAM)一般都比较有限,LwIP的运行平台一般都是资源受限的MCU。为了能够更加高效的运行ÿ ... [详细]
  • 千万不要错过的后端[纯干货]面试知识点整理 I I
    千万不要错过的后端【纯干货】面试知识点整理IIc++内存管理上次分享整理的面试知识点I,今天我们来继续分享面试知识点整理IIlinuxkernel内核空间、内存管理、进程管理设备、 ... [详细]
  • funcReadXlsx(c[]CmdbTest,SheetNamestring)error{打开文件,如果文件不存在创建,存在就打开path:.cm ... [详细]
  • 七、Golang之切片(slice)-由于数组的长度是固定的,所以有很多的局限性,所以今天讲切片,切片是一个拥有相同类型且长度可变的有序集合,切片和数组两种不同的数据类型,它是基于 ... [详细]
  • golang 解析磁力链为 torrent 相关的信息
    其实通过http请求已经获得了种子的信息了,但是传播存储种子好像是违法的,所以就存储些描述信息吧。之前python跑的太慢了。这个go并发不知道写的有没有问题?!packag ... [详细]
  • 我正在使用数组列表通过构建一个交互式菜单供用户选择来存储来自用户输入的值。到目前为止,我的两个选择是为用户提供向列表输入数据和读取列表的全部内容。到目前为止,我创建的代码由两个类组成。 ... [详细]
  • 字符串匹配: BF与KMP算法
    文章目录一.BF算法1.算法思想2.代码实现二.KMP算法1.算法思想概述2.理解基于最长相等前后缀进行匹配3.代码中如何实现next数组5.代码实现6.next数组的优化一.BF ... [详细]
  • 1.什么是hashcode方法?hashcode方法返回对象的哈希码值在应用程序的执行期间,只要对象的equals方法的比较操作所用到的信息没有改变& ... [详细]
  • 用户体验这点事儿
    2009-02-1518:03byMainz,3366visits,网摘,收藏,编辑用户体验设计最近比较热,从以前的轻视UI到现在不管是桌面软件还是网站都开始关注用户 ... [详细]
author-avatar
茶茶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有