zoukankan      html  css  js  c++  java
  • GO slice切片

    package main
    
    import "fmt"
    
    /*
    	切片
    		切片是引用类型,所以当实参传递给func 在func中更改切片 会影响切片的实际值
    */
    func main() {
    	//数组
    	var intArr = [...]int{11, 22, 33, 44, 55}
    	fmt.Println(intArr)
    	//定义切片 方式一 定义一个切片来引用创建好的数组
    	//intArr[1:3]表示引用intArr数组,引用intArr的起始下标为1,结束下标为3(但是不包括3) 以后想获取数组某个值到某个值是也可以用arr[:]
    	slice := intArr[1:3] //这里切片引用了intArr数组 所以在下面改变切片的值 intArr的值也会改变
    	slice[0] = 555
    	fmt.Println(intArr)
    	fmt.Println("切片的值是", slice)
    	fmt.Println("切片的容量是", cap(slice)) //容量一般是长度的两倍但是不准这个是根据长度来动态增加的
    	//方式二
    	slice1 := make([]float64, 5, 10) //切片类型,切片长度,切片容量:这个容量参数是可选的可以不填
    	fmt.Println(slice1)
    	//方式三
    	slice2 := []string{"字", "富", "串"}
    	fmt.Println(slice2)
    	fmt.Println("长度是", len(slice2)) //3
    	fmt.Println("容量是", cap(slice2)) //3
    
    	//用内置函数append,对切片进行动态添加 若果切片容量不够可以自动增加容量
    	slice3 := []string{"第一", "第二"}
    	slice3 = append(slice3, "新加的")
    	fmt.Println(slice3)
    	//也可以追加切片 ...这三个点必须带
    	slice3 = append(slice3, slice2...)
    	fmt.Println(slice3)
    	//切片的拷贝   拷贝如果容量不够不会报错 如果长度是一那就从另一个切片中只拷贝一个
    	slice4 := []int{1, 2, 3}
    	slice5 := make([]int, 10)
    	copy(slice5, slice4) //将slice4拷贝给slice5	//copy()两个的参数类型必须都是切片
    	fmt.Println(slice4)
    	fmt.Println(slice5)
    
    	/*
    		string和slice  string可以进行切片处理
    			string底层是byte数组 所以可以切片
    	*/
    	str := "heelo@hahaha"
    	slice6 := str[6:]
    	fmt.Println(slice6)
    	//修改字符串中某个值
    	slice7 := []byte(str) //将字符串转为byte类型切片
    	slice7[0] = 'z'       //修改某个值
    	str = string(slice7)  //再将byte类型的切片转为string,这就修改成功了 但是这只能修改英文和数组不能修改汉字,英文byte是1字节一个汉字是3个字节
    	fmt.Println(str)
    	//修改为汉字
    	slice8 := []rune(str) //将字符串转为rune类型切片
    	slice8[0] = '北'       //修改某个值
    	str = string(slice8)  //应为rune切片是按照字符处理所以兼容汉字
    	fmt.Println(str)
    	//斐波那契数列
    	var length int
    	fmt.Println("输入斐波那契数:")
    	fmt.Scanln(&length)
    	fbnFun := fbn(length)
    	fmt.Println(fbnFun)
    }
    func fbn(n int) []int {
    	var slice9 = make([]int, n)
    	for i := 0; i < n; i++ {
    		if i == 0 || i == 1 {
    			slice9[i] = 1
    			continue
    		}
    		slice9[i] = slice9[i-1] + slice9[i-2]
    	}
    	return slice9
    }
    

      

  • 相关阅读:
    linux C 代码查看推荐 anjuta
    Fixes error: "Couldnt load module pthres" and similar.
    mfloatabi=name
    ubuntu 阅读chm 文件
    android 文件系统挂报错 switch_root: bad init /sbin/init: No such file or directory
    writel __raw_writel mb()/rmb()/wmb()
    企业创新里的阴和阳
    关于verilog testbench
    Git使用初步
    Latchup初认识
  • 原文地址:https://www.cnblogs.com/sheep-fu/p/14778633.html
Copyright © 2011-2022 走看看