zoukankan      html  css  js  c++  java
  • Golang-Range知识点

    rang原理

    rang的value是对被遍历值的一个拷贝
    即遍历时,value会开辟一块内存,每次将被遍历对象的值拷贝到value的内存空间里。所以对value本身的修改是无法影响外部对象的。
    除非被遍历的对象是一个指针类型。这样拷贝过来的是一个地址。对地址指向内存空间的值进行修改则会影响到原始值。

    package main
    
    import "fmt"
    
    type person struct {
    	string
    	int
    }
    
    func rang() {
    
    	persons := []person{
    		{"小明", 18},
    	}
    	persons1 := []*person{
    		{"小红", 20},
    	}
    
    	for _, v := range persons {
    		v.string = "小明111"
    		v.int = 19
    	}
    
    	for _, v := range persons {
    		fmt.Println(v)
    	}
    
    	for _, v := range persons1 {
    		v.string = "小红111"
    		v.int = 21
    	}
    
    	for _, v := range persons1 {
    		fmt.Println(*v)
    	}
    
    }
    

  • 相关阅读:
    babel的使用及安装配置
    npm install卡顿问题
    盒模型
    安全性
    字符串方法
    vue
    CSS3
    重载运算符
    装箱拆箱
    模板库
  • 原文地址:https://www.cnblogs.com/qwfy-y/p/14991587.html
Copyright © 2011-2022 走看看