zoukankan      html  css  js  c++  java
  • GO Slices: 用法与原理

    GO Slices: 用法与原理

    此文是golang blog的笔记,原文地址 https://blog.golang.org/go-slices-usage-and-internals

    Introduction

    golang的slice类型提供了对类型数据的顺序操作。Slices与其他语言中的array概念类似,但有其不同之处。

    Arrays

    一个Array类型定义了长度与元素的数据类型。它的长度是固定的,可以通过序号被索引。

    var a [4]int
    a[0] = 1
    i := a[0]
    // i == 1
    

    Golang中array是值,一个array变量表示整个数组,而不是像C中表示一个指向第一个元素的指针。

    Slices

    array虽然会被用到,但是有点不太灵活,所以在GO代码中出现的比较少。Slices则几乎到处出现。一个slice表示为[]T,T是元素类型。Slice的长度是不固定的。
    Slice可以被make函数创建,例如:

    func make([]T, len, cap) []T
    
    var s []byte
    s = make([]byte, 5, 5)
    // s == []byte{0, 0, 0, 0, 0}
    
    

    Slice的长度和容量可以由函数len(), cap() 获取。

    Slice的初始值是nil,此时lencap返回0。Slice可以用半开区间来表示。

    b := []byte{'g', 'o', 'l', 'a', 'n', 'g'}
    // b[1:4] == []byte{'o', 'l', 'a'}, sharing the same storage as b
    

    一个Slice描述符有一个指向数组的指针,长度,容量三个部分组成。切片不会拷贝数据,只是创建了一个新的slice,其中指针指向原始数据。

  • 相关阅读:
    进程的由来
    进程管理逻辑图
    OS的特征

    4.6 路由相关
    设计测试用例时应该考虑哪些方面,即不同的测试用例针对那些方面进行测试?
    如何测试一个纸杯?
    软件产品质量特性是什么?
    一个京东登录的安全漏洞
    文章、书阅读
  • 原文地址:https://www.cnblogs.com/birdhack/p/6576066.html
Copyright © 2011-2022 走看看