golang切片类型

切片slice

  • 其本身并不是数组,它指向底层的数组
  • 作为变长数组的替代方案,可以关联底层数组的局部或全部
  • 为引用类型
  • 可以直接创建或从底层数组获取生成
  • 使用len()获取元素个数,cap()获取容量
  • 一般使用make()创建
  • 如果多个slice指向相同底层数组,其中一个的值改变会影响全部
  • make([]T,len,cap)
  • 其中cap可以省略,则和len的值相同
  • len表示存数的元素个数,cap表示容量

slice的定义方式

package main

import (
    "fmt"
)

func main() {
    /*
    a := [10]int{}
    fmt.Println(a)
    s1 := a[5:]
    // s1 := a[5:len(a)]
    // s1 := a[5:10]
    fmt.Println(s1)
    */
    s1 := make([]int,3,10)
    fmt.Println(s1,len(s1),cap(s1))
}

slice与底层数组的对应关系

原文地址:https://www.cnblogs.com/Csir/p/9292146.html

时间: 2024-08-30 13:34:49

golang切片类型的相关文章

golang切片

切片与数组 go的数组是这样的 array := [3]int{1,2,3} array := [...]int{1,2,3} go的切片 array := []int{1,2,3} //1 array := make([]int,2) //2 arr := [5]int{1,2,3,4,5} array :=arr[1:3] //底层数组可见 会修改原数组 len和cap的区别 make切片有两个参数len和cap len:代表底层数组可访问的范围 用索引访问不可越过这个界限 cap:代表底层

深入学习golang(3)—类型方法

类型方法 在Go语言中,我们可以给任何类型(包括内置类型,但不包括指针和接口)定义方法.例如,在实际编程中,我们经常使用[ ]byte的切片,我们可以定义一个新的类型: type ByteSlice []byte 然后我们就可以定义方法了.例如,假如我们不想使用内建的append函数,我们可以实现一个自己的append方法: func Append(slice, data[]byte) []byte { l := len(slice) if l + len(data) > cap(slice)

golang:interface{}类型测试

在golang中空的interface即interface{}可以看作任意类型, 即C中的void *. 对interface{}进行类型测试有2种语法: 1. Comma-ok断言: value, ok = element.(T), 其中T是具体类型. 2. Switch测试: switch element.(type) { case T1: case T2: default: } 其中T1, T2是具体类型. 注意: element.(type)语法不能在switch外的任何逻辑里使用. 在

golang切片slice

切片slice是引用类型 len()函数获取元素的个数 cap()获取数组的容量 1.申明方式 (1)var a []int 与数组不同的是他不申明长度(2)s2 := make([]int, 3, 10) //元素的类型,元素的数量,元素的容量  fmt.Println(len(s2), cap(s2)) 输出元素的数量和容量 2.讲数组转换成切片 2 a := [10]int{} 3 fmt.Println(a) 4 s1 := a[:10] //取前10个元素 [5:]取 5-最后的元素

Golang 切片

1. 为什么需要切片,和数组区别? 数组是定长的,切片是变长的 底层是数组存储 声明 var identifier []type 区分数组是[]中没有数字 var arr = [3]int {1, 2, 3} fmt.Println(arr) var sl = []int {1, 2, 3} fmt.Println(sl) fmt.Printf("类型 arr:%T, sl:%T", arr, sl 输出 [1 2 3] [1 2 3] 类型 arr:[3]int, sl:[]int

golang基础类型

1.变量 Go使用关键字var定义变量,类型信息放在变量名后面,初始化为零,如下: 在函数内部还有一种更简洁的:=定义方式 变量赋值,两个变量可直接交换 注意:函数内部定义的变量没使用的话编译器会报错. declared and not used 2 常量 用关键词const定义,常量值必须是编译期间能够确定的数值. 枚举iota,从0开始按行数自增,如果重新const,则从0开始再次计算. 3 类型 Go内置以下基础类型: 布尔类型:bool. 整型:int8.byte.int16.int.u

golang 切片和map查询比较

package main import ( "fmt" "time" ) var testTimeSlice = []string{"aa", "bb", "cc", "dd", "ee", "aa", "zz"} var testTimeMap = map[string]bool{"aa": true, &

golang mongo-driver filter 构建--bson和golang基础类型

go.mongodb.org/mongo-driver 是mongo的golang官方包 通过例子我知道连接是这样的 clientOptions := options.Client().ApplyURI("mongodb://tag:[email protected]:27017/tag") client, err := mongo.NewClient(clientOptions) if err != nil { fmt.Println(err) } ctx, _ := context

【GoLang】类型和作用在它上面定义的方法必须在同一个包里定义

cannot define new methods on non-local type int 参考资料: http://wiki.jikexueyuan.com/project/the-way-to-go/10.6.html http://stackoverflow.com/questions/28800672/how-to-add-new-methods-to-an-existing-type-in-go