zoukankan      html  css  js  c++  java
  • Go切片

    数组长度固定  长度是数组的类型一部分  所以这样有很多局限性 例如 1. 传递参数必须要固定的数组 2.  数组满了不能添加元素

    1.切片是一个引用类型

    2. 切片唯一合法的比较操作是和ni

    3.切片的本质就是对底层数组的封装  

    4.一个nil值的切片的长度和容量都是0

    5.长度和容量都是0的切片一定是nil

    6.是nil值的切片表示 没有底层数组 

    package main
    
    import (
    	"fmt"
    	"reflect"
    	"sort"
    )
    
    //数组
    func slice() {
    	var name[3] int //声明
    	fmt.Println(reflect.TypeOf(name))
    	var name2 [] int  //声明切片
    	fmt.Println(reflect.TypeOf(name2))
    
    	//切片表达式从 【字符串】、【数组】、【指向数组】或【切片的指针】构造子字符串或切片
    	//1.指定low和height两个索引界限的简单形式
    	a_slice := [5]int{1, 2, 3, 4, 5}
    	s:=a_slice[2:4]
    	fmt.Println(s)
    	//2.除了第一种 还 指定容量的完整的形式。
    	//使用make()函数构造切片
    	a:=make([]int,2,5) //make([]T, size, cap)
    	fmt.Println(a)
    
    	s3 := make([]int, 0,0)  //他有底层数组
    	fmt.Println(s3 ==nil)//false
    
    	var s4 []int  //他没有有底层数组
    	fmt.Println(s4 ==nil) //true
    
    	//切片的赋值拷贝
    	var shuzu =[5]int {1, 2, 3, 4, 5}
    	qiep:=shuzu[1:4]
    	qiep2:=qiep
    	qiep[0]=5  //修改了切片第0个索引 相当于把2改成5
    	fmt.Println(shuzu)  //数组发生变化
    	fmt.Println(qiep)   //切片1发生了变化
    	fmt.Println(qiep2)//切片2也发生了变化
    
    	//添加元素
    	var  s2 [] int
    	s2=append(s2,1)
    	fmt.Println(s2) //添加一个元素给s2
    
    	//删除元素
    	var delname [] int
    	delname=append(delname,11,3,4,5,9)
    	fmt.Println(delname)
    	delname=append(delname[:2],delname[3:]...)
    	fmt.Println(delname)
    
    	sort.Ints(delname)  //排序delname
    	fmt.Println(delname)
    }
    
    func main(){
    	slice()
    }
    

      

  • 相关阅读:
    ThinkPHP 3.2.2 实现持久登录 ( 记住我 )
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 17 电话号码的字母组合
  • 原文地址:https://www.cnblogs.com/xzqpy/p/12957128.html
Copyright © 2011-2022 走看看