zoukankan      html  css  js  c++  java
  • Golang 数组

    Golang 数组

    数组的四种初始化

    func main() {
    	var arr1 [3]int 
    	fmt.Println(arr1)
        
    	//int[] arr = new int[3]{1,3,4}; Java中报错
        var arr2 = [3]int{1, 2, 4}// var arr2 [3]int = [3]int{}
    	fmt.Println(arr2)
        
    	//形如Java int[] arr = new int[]{1,2,3,4}
    	var arr3 = [...]int{1, 2, 3, 4}//var arr3 [...]int = [...]int{}错误
    	fmt.Println(arr3)
        
    	//类似于Js中的伪数组形式, 默认按照数组下标填充
    	var arr4 = [...]int{1: 100, 0: 200, 2: 300}//200,100,300
    	fmt.Println(arr4)
        
    	arr5 := [...]string{1: "tom", 0: "Jack"}
    	fmt.Println(arr5)
    }
    

    for - range

    func main() {
    	arr5 := [...]string{1: "tom", 0: "Jack",2:"Jessie",3:"Lucy"}
    	//和Js中的forEach方法相似,可以同时获取到下标和值
    	for idx, val := range arr5 {
    		fmt.Printf("index = %d, val = %s 
    ",index,val)
    	}
    	fmt.Println(arr5)
    }
    

    注意事项

    1. 数组是多个相同类型数据的组合, 一个数组一旦声明/ 定义了, 其长度是固定的, 不能动态变化

    2. var arr[] int , arr就是一个slice切片, 注意没有初始长度

    3. Go的数组属于值类型, 在默认情况下是值传递, 因此会进行值拷贝, 数组间不会相互影响,

      不同于JavaC#

      //长度做为数组的一部分, [3]int != [4]int
      func method(arr [4]int) {
         for idx, _ := range arr {
            arr[idx] *= 10
         }
      }
      func main() {
         arr := [...]int{1, 2, 3, 4}
         fmt.Println(arr) // 1,2,3,4
         method(arr)
         fmt.Println(arr) // 1,2,3,4
      }
      
    4. 如果想在其它函数中, 修改原来的数组, 可以使用引用传递(指针)

      //使用指针类型
      func method(arr *[4]int) {
      	arr[0] = 10
      }
      func main() {
      	arr := [...]int{1, 2, 3, 4}
      	fmt.Println(arr) // 1,2,3,4
      	method(&arr)
      	fmt.Println(arr) // 10,2,3,4
      }
      
      
    5. 长度是数组类型的一部分, 在传递函数参数是, 需要考虑数组的长度

    6. Go中数组的长度必须是一个常量, 不能是变量, 否则就会报 non-constant array bound

      func findRepeatNumber(nums []int) int {
      	dict := [len(nums)]int{}//错误, 长度必须是一个常量
      	return -1
      }
      
  • 相关阅读:
    最小的K个数
    数组中出现次数超过一半的数字
    符串的排列
    二叉搜索树与双向链表
    复杂链表的复制
    String,StringBuilder,StringBuffer
    二叉树中和为某一值的路径
    二叉搜索树的后序遍历序列
    Java单例模式
    222. Count Complete Tree Nodes
  • 原文地址:https://www.cnblogs.com/kikochz/p/13472597.html
Copyright © 2011-2022 走看看