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 。
  • 相关阅读:
    Oracle JDBC:驱动版本区别与区分 [转]
    项目管理: Alpha,Beta,RC,GA,Release
    J2EE: JCA (Java Connector Architecture) [转]
    HTML:Event [转]
    JavaScript:inherits
    HTML5 Canvas
    Selenium1 Selenium2 WebDriver
    HTML5 Canvas:初始Canvas
    License友好的前端组件合集
    JavaSe:Comparator
  • 原文地址:https://www.cnblogs.com/devzyh/p/12712545.html
Copyright © 2011-2022 走看看