• 06Go语言数组和切片


    数组

    数组初始化

    	var arr [4]int
    	arr[0] = 1
    	arr[1] = 2
    	fmt.Println(arr)
    
    	var a = [4]int{1, 2, 3, 4}
    	fmt.Println(a)
    
    	var b = [4]int{1, 2, 3}
    	fmt.Println(b)
    
    	var c [4]int
    	fmt.Println(c)
    
    	//对指定下标位置赋值,从零开始
    	var d = [4]int{2: 1}
    	fmt.Println(d)
    
    	f := [...]int{1, 3, 4, 2, 4}
    	fmt.Println(f)
    

    输出结果:

    [1 2 0 0]
    [1 2 3 4]
    [1 2 3 0]
    [0 0 0 0]
    [0 0 1 0]
    [1 3 4 2 4]
    

    for循环遍历数组

            f := [...]int{1, 3, 4, 2, 4}
    	for index, val := range f {
    		println(index, val)
    	}
    

    数组是值类型

    	f := [...]int{1, 2, 3, 4, 5}
    	f2 := f
    	f2[1] = 500
    	fmt.Println(f)
    	fmt.Println(f2)
    

    输出结果

    [1 2 3 4 5]
    [1 500 3 4 5]
    

    多维数组

    arr3 := [3][3]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
    

    切片

    slice,就是动态数组

    初始化

            var s1 []int
    	var s2 []int
    	s1 = append(s1, 1, 2, 3)
    	s2 = append(s2, 4, 5, 6)
    	s1 = append(s1, s2...)
            s3 := make([]int, 10, 64)
    

    注意,append数据引起扩容的时候,引用地址会发生改变,所以需要重新赋值,扩容是按2倍原来长度扩容的

    从数组中初始化切片

    	nums := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    	s1 := nums[:5]  //从0到5,不包括index=5
    	s2 := nums[0:5] //从0到5
    	s3 := nums[5:]
    	s4 := nums[:]
    	fmt.Println(s1)
    	fmt.Println(s2)
    	fmt.Println(s3)
    	fmt.Println(s4)
    	fmt.Println("--------------")
    	fmt.Printf("%p\n", &nums)
    	fmt.Printf("%p\n", s1)
    	fmt.Printf("%p\n", s2)
    	fmt.Printf("%p\n", s3)
    	fmt.Printf("%p\n", s4)
    	s4[0] = 999
    	s3[0] = 999
    	fmt.Println(nums)
    

    输出

    [1 2 3 4 5]
    [1 2 3 4 5]
    [6 7 8 9 10]
    [1 2 3 4 5 6 7 8 9 10]
    --------------
    0xc000012640
    0xc000012640
    0xc000012640
    0xc000012668
    0xc000012640
    [999 2 3 4 5 999 7 8 9 10]
    

    需要注意:

    • 切片从数组中初始化,地址还是数组中的地址。所以切片一改,数组也改了
    • nums[:5] 0-5,不包含5,5指的是index
    • 数组是值类型,切片是引用类型
  • 相关阅读:
    零开始:NetCore项目权限管理系统:登录授权
    零开始:NetCore项目权限管理系统:定义基本接口和实现
    零开始:NetCore项目权限管理系统:基础框架搭建
    javascript匿名函数
    锚链接
    前端面试题(js部分)
    font-size:100%
    line-height影响排版
    设置苹果手机input按钮和button按钮颜色显示问题
    !important的用法及作用
  • 原文地址:https://www.cnblogs.com/huacha/p/16807753.html
Copyright © 2020-2023  润新知