zoukankan      html  css  js  c++  java
  • Go 高级数据类型

    数组 Array

    • 数组是相同类型数据的集合,数组类型的长度是不可变的。
    • 数组类型的零值一定是不包含任何元素的空数组,填充元素为对应类型的零值。
    • 索引表达式和切片表达式都可以应用于数组,包括len和cap函数。
    • 使用...标记数组长度标识由编译器计算元素数量来指定长度,但此时要指定数组所包含的元素。

    实例

    package main
    
    import "fmt"
    
    func main() {
    
        nums := []int{1,2,3}
        fmt.Println(len(nums),cap(nums))
    }
    

    切片 Slice

    • 切片是对数组的包装形式。切片本身不拥有任何数据,只是对现有数组的引用。
    • 对切片所做的任何修改都会反映在底层数组中。
    • 切片类型的零值为 nil;一个 nil 切片的长度和容量为 0。
    • 切片操作[a:b]返回的数据包括索引a但不包括索引b,其中 a>=0。
      省略a时默认值为 0,省略 b 时默认值为数组的长度,a、b 可以同时省略。
    • 切片的长度表示切割指定的元素个数,容量表示从切割开始位置起原始数组的元素个数。
    • 如果添加的元素的个数超过了容量的值,内存管理器会重新划分一块容量值为原容量2倍大小的内存空间,
      这个机制可以提升运算性能,因为内存的频繁重新划分会降低性能 。

    实例:

    package main
    
    import "fmt"
    
    func main() {
    
        nums := []int{1,2,3} // 声明底层数组
        fmt.Println(len(nums),cap(nums)) // 打印信息
        nums = append(nums,4) // 切片追加元素
        nums[0] = -100 // 改变首位数组
        fmt.Println(nums,len(nums),cap(nums)) // 打印追加后信息
    }
    

    字典 Map

    • Go的字典类型 Map 是散列表(hash table)的实现。
    • 散列表是一个实现了关联数组的数据结构,关联数组适用于表示键值对的无序集合的一种抽象数据类型。

    实例:

    func TestMap(t *testing.T) {
    
    	nums := map[rune]int{}
    	nums['A'] = 123
    	nums['B'] = 456
    	delete(nums, 'A')
    	fmt.Printf("%#v", nums)
    }
    
    • delete 函数不管键是否存在都会默默执行完毕。

    make 函数

    • 内置的 make 函数可以用来初始化切片、字典和通道类型的值。

    语法:

      nums := make([]int,10)
    
    • 这样会为 nums 内的数字全部填充零值 0 。
  • 相关阅读:
    docker 部署aps.net MVC到windows容器
    docker 搭建私有仓库 harbor
    解决关于:Oracle数据库 插入数据中文乱码 显示问号???
    ionic cordova build android error: commamd failed with exit code eacces
    cordova build android Command failed with exit code EACCES
    Xcode 10 iOS12 "A valid provisioning profile for this executable was not found
    使用remix发布部署 发币 智能合约
    区块链: 编译发布智能合约
    mac 下常用命令备忘录
    JQuery fullCalendar 时间差 排序获取距当前最近的时间。
  • 原文地址:https://www.cnblogs.com/devzyh/p/12712545.html
Copyright © 2011-2022 走看看