go语言之内置函数

基础内置函数

  • len 查看可迭代对象的长度

func main() {
    
    var a [5]int
    
    fmt.Println("len is arrays: ", len(a))
    
    
}
  • make 函数

new和make是内建的两个函数,主要用来创建分配类型内存。
make返回的还是这三个引用类型本身;而new返回的是指向类型的指针

 // func make(t Type,size IntegerType) Type
 
 // 内建函数 make 用来为 slice,map 或 chan 类型分配内存和初始化一个对象(注意:只能用在这三种类型上),跟 new 类似,第一个参数也是一个类型而不是一个值,跟 new 不同的是,make 返回类型的引用而不是指针,而返回值也依赖于具体传入的类型

array := make(int[], n)

  • new 函数

对于引用类型的变量,我们不仅要声明它, 还要为它分配内容空间,所以要使用 new 和 make 函数进行分配内存

// 下面这个例子肯定会报错
// panic: runtime error: invalid memory address or nil pointer dereference
// 为什么呢?
// 因为我们只是声明了这个引用类型变量,而没有去给它分配内存空间
func main() {
    var i *int
    *i = 10
    fmt.Println(*i)
}

// 那我们要怎么修改呢?
// 看下面这个例子
func main() {
    var i *int
    i = new(int)
    *i = 10
    fmt.Println(*i)
}


// func new(Type) *Type
// new这个函数,只接收一个参数,这个参数是一个类型,分配好之后,返回一个指向该类型内存地址的指针,同时请注意,它同时会把内存中置为0,也就是该类型中的空值
  • cap(s) 查看切片的容量
func main() {
    
    // 创建长度和容量都为3的字符串切片
    array := []string{"a", "b", "c"}
    fmt.Println("array len & cap ", len(array), cap(array))
    
    // 创建一个长度为2 ,容量为3的切片
    array2 := array[0,2]
    fmt.Println("array2 len & cap ", len(array2), cap(array2))
}


// array len & cap 3 3
// array2 len & cap 2 3

  • copy 复制切片

函数 copy 在两个 slice 间复制数据,复制⻓度以 len 小的为准,两个 slice 指向同⼀底层数组。直接对应位置覆盖


func main() {
    
    s1 := []int{1,2,3,4}
    s2 := []int{5,6}
    fmt.Println("before s1 s2", s1, s2)
    
    // 将s2 的值 ,拷贝到s1
    copy(s1, s2)
    fmt.Println("last s1 s2", s1, s2)
}

// before s1 s2 [1 2 3 4] [5 6]
// last s1 s2 [5 6 3 4] [5 6]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值