zoukankan      html  css  js  c++  java
  • golang slice底层示例代码

    package main
    
    import (
    	"log"
    )
    
    // 说明slice底层是数组的引用的示例代码
    // slice的底层是数组的一个引用
    // slide[:]的方式并非重新开辟新的内存地址
    func main() {
    	arr := [5]int{1, 2, 3, 4, 5} // 定义一个长度是5的数组
    	slice := arr[:]              // 数组转换为slice
    	slice2 := arr[:]             // 再复制一个slice
    	slice3 := arr[1:]            // 再复制一个slice,这个从第二个元素开始
    
    	log.Printf("arr[1] = %p, slice[1] = %p, slice2[1] = %p, slice3[1] = %p", &arr[1], &slice[1], &slice2[1], &slice3[1]) // 地址全部一致,说明元素[1]都指向同一个内存地址
    	slice2[1] = 100                                                                                                      // 修改slice2的第二个元素的值
    	log.Printf("arr[1] = %p, slice[1] = %p, slice2[1] = %p, slice3[1] = %p", &arr[1], &slice[1], &slice2[1], &slice3[1]) // 地址没有任何改变
    	log.Printf("arr[1] = %v, slice[1] = %v, slice2[1] = %v, slice3[0] = %v", arr[1], slice[1], slice2[1], slice3[0])     // 看看值是否一起变化
    }
    

      

  • 相关阅读:
    python操作Redis详解
    python操作SQLAlchemy
    设计模式详解及Python实现
    计算机基础
    DRF内置过滤组件与排序组件结合使用
    LTE
    LTE
    LTE
    LTE
    LTE
  • 原文地址:https://www.cnblogs.com/eecjimmy/p/13624424.html
Copyright © 2011-2022 走看看