zoukankan      html  css  js  c++  java
  • go数组

    // 定义数组:
    var a [3]int
    var a [3]int = [3]int{1,2,3}
    var a = [...]int{1,2,3}
    var a = []int{1,2,3}
    a := []int{1,2,3}
    // 声明二维数组
    var a [3][2]int
    a = [3][2]int {{11,2},{5,6}{8,3}}

    切片:

    slice [开始位置:结束位置]

    动态创建切片:

    make([]type,size)
    // type:切片元素类型,size:分配多少元素

     append和copy方法:

    a := []int{1,2,3,...}
    b := []int{5,5,5,5,5}
    append() //添加元素
    copy(a,b) // b替换a的位置

    cap和len:

    切片slice:容量(cap)表示底层数组的大小,长度(len)可以使用的大小
    当你用append扩展长度时,如果新的长度小于容量,不会更换底层数组,否则,go会重新申请一个底层数组。容量的用途就是在数据拷贝和内存申请的消耗与内存占用之间提供一个权衡。

    map:go语言中的字典

    一种元素对(pair)无序集合

    var mapname map[keytype]valuetype
    // mapname为map变量名
    // keytype为键类型
    // valuetype为键对应的值类型
    mapLit = map[string]int{"one": 1, "two": 2}

     字符串排序:

    sort.Strings(sceneList)

    从字典(map)删除键值对

    delete(map,键)

    sync.Map(在并发环境中使用的map),Store表示存储,Load表示获取,Delete表示删除。

    var scene sync.Map
    scene.Store("london",100)
    // 保存到sync.Map
    fmt.Println(scene.Load("london"))
    // 根据键删除键值
    scene.Range(func(k,v interface{}) bool{
    // 遍历sync.Map,遍历需要一个匿名函数,参数k,v,类型interface{},每次遍历一个元素后时,都会调用匿名函数把结果返回
       fmt.Println(k,v) 
       return true  
    })

    列表list:

    使用New()函数和var关键字声明
    1.new()
    变量名 := list.New()
    2.var
    var 变量名 list.List
    列表元素可以为任意类型
    在队列前方和后方插入元素,使用的方法PushFront和PushBack
    InsertAfter(v interface{},mark*Element)*Element
    // 在mark点之后插入元素
    InsertBefore  // 在mark点之前插入元素

    列表插入函数的返回值会提供一个*list.Element结构

    element :=l.PushBack("first")
    // 将first插入列表尾部,将这个元素的内部结构保存到element变量中
    l.Remove(element)
    // 移除element变量对应的元素

    遍历列表:

    for i := l.Front();i != nil ; i = i.Next() {
    // i := l.Front()表示初始赋值,只会在开始执行一次,每次循环会进行一次
    // i != nil如果返回false,则退出循环
    // 反之则会执行i = i.Next(),遍历元素都会调用Next()函数
        fmt.Println(i.value)    
    }

    nil:空值/零值

    布尔类型的零值:false;数值类型的零值:0;字符串类型的零值:""
    指针(pointer),切片(slice),映射(map),通道(channel),函数(func)和接口(interface)的零值则为nil。 1.nil不能比较 2.nil不是关键字或保留字,可以定义一个名称为nil的变量 3.nil没有默认类型

    new和make:创建并分配类型的内存,new值分配内存,make之内用于切片,映射,通道

    var sum *int

    sum = new(int) // 分配空间

    new函数只接受一个参数,这个参数是一个类型,并且返回一个指向该类型内存地址的指针,同时new函数会把分配的内存变成零,也就是该类型的零值

     new函数返回的永远是类型的指针,指针指向的说类型的内存地址

    make值用于切片,映射,通道的内存创建,它返回的就是引用类型

  • 相关阅读:
    Java 集合深入理解(15):AbstractMap
    数据库服务器的性能调优
    重温数据结构:哈希 哈希函数 哈希表
    Linux 虚存 linux2.6内核特性
    不想做却不得不做某份工作,怎么破?
    Java 集合深入理解(14):Map 概述
    Linux 虚存的性能问题
    Android重写getResources规避用户调整系统字体大小影响Android屏幕适配
    Android CardView设置成普通的Framelayout
    linux系统性能监控--网络利用率
  • 原文地址:https://www.cnblogs.com/xuezhihao/p/12012456.html
Copyright © 2011-2022 走看看