1.3.2 迭代处理数组

  1. Go语言可通过关键字range,配合关键字for来迭代数组或切片里的每一个元素,迭代切片时,关键字range会返回两个值,第一个值是当前迭代到的索引位置,第二个值是该位置对应元素值的一份副本,示例:

    // 创建一个整型切片,并赋值
    array := []int{1, 6, 8}
    // 迭代每一个元素,并打印值
    for i, v := range array {
        fmt.Printf("index: %d  value: %d  element-address:%X \n", i, v, &array[k])
    }

    结果:

    index: 0  value: 1  element-address:C000018078 
    index: 1  value: 6  element-address:C000018080 
    index: 2  value: 8  element-address:C000018088

    element-address值会变化

  2. range函数不仅仅可以遍历切片,还可以遍历数组、字符串、map或通道等,示例:

    func t2() {
    	// 创建一个整型切片,并赋值
    	array := []int{1, 6, 8}
    
    	// 迭代每一个元素,并打印值
    	for i, v := range array {
    		fmt.Printf("index: %d  value: %d  element-address:%X \n", i, v, &array[i])
    	}
    
    	fmt.Println("\n使用匿名变量(下划线)来忽略索引值:")
    	// 使用空白标识符(下划线)来忽略索引值
    	for _, v := range array {
    		fmt.Printf("value: %d  \n", v)
    	}
    
    	fmt.Println("\n使用for循环对切片进行迭代:")
    	// 使用传统的for循环对切片进行迭代
    	for i := 0; i < len(array); i++ {
    		fmt.Printf("value: %d  \n", array[i])
    	}
    }

Last updated