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()
    }
    

      

  • 相关阅读:
    在Eclipse中指定JDK
    VMware桥接模式下主机和和虚机间互相ping不通的处理方法
    CentOS7系列--10.1CentOS7中的GNOME桌面环境
    CentOS7系列--5.3CentOS7中配置和管理Kubernetes
    CentOS7系列--5.2CentOS7中配置和管理Docker
    CentOS7系列--5.1CentOS7中配置和管理KVM
    CentOS7系列--4.1CentOS7中配置DNS服务
    CentOS7系列--3.2CentOS7中配置iSCSI服务
    移动web开发(一)——移动web开发必备知识
    文章索引
  • 原文地址:https://www.cnblogs.com/xzqpy/p/12957128.html
Copyright © 2011-2022 走看看