go遍历过程中用 value 取不到 collection 的指针地址

 基础语法  2022-04-30  admin  602  812

go遍历过程中用 value 取不到 collection 的指针地址

for-range 其实是语法糖,内部调用还是 for 循环,初始化会拷贝带遍历的列表(如 array,slice,map)。每次遍历的 value 地址是不变的,若用 value 去地址,最终只会拿到一个地址。但换个方式还是可以取到地址的。

package main

import "fmt"

func main() {
	arr := []int{1, 2, 3}
	for key, val := range arr {
		fmt.Println("address:", &val, &arr[key], "value:=", val)
	}
	//address: 0xc0000180c8 0xc00000c180 value:= 1
	//address: 0xc0000180c8 0xc00000c188 value:= 2
	//address: 0xc0000180c8 0xc00000c190 value:= 3
}


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

相关推荐


go 结构体自实现构造函数

Go没有自带的构造函数,采用自实现方式1结构体不复杂,可以返回结构体类型,值拷贝性能开销小funcNewPerson(namestring,ageint8)Person{ returnPerson{ name:name, age:age, } }方式2结构体复杂,得返回结构体指针类型,避免值拷贝产生的性能开销funcNewPerson(namestring,ageint8)*Person

go 结构体和结构体指针

结构体实例化//结构体实例化 //写法1 varaAnimal a.Name="小狗" a.Age=18 //写法2 a2:=Animal{ Name:"dog", Age:18, } fmt.Println(fmt.Sprintf("类型:%T-值:%v占用内存:%v",a,a,unsafe.Sizeof(a))

通过指针实现二维数组转换为树形结构

/** *通过指针实现二维数组转换为树形结构 *@paramarray$data数据 *@paramstring$childrenname子数据名 *@paramstring$keyName数据key名 *@paramstring$pidName数据上级key名 *@returnarray */ functionarray2Tree(array$data,string$childr

Go 切片面试真题八连问

原文:https://mp.weixin.qq.com/s/Qo_DNAAcamXXwU9ihrY6jA前言哈喽,大家好,我是asong。最近没事在看八股文,总结了几道常考的切片八股文,以问答的方式总结出来,希望对正在面试的你们有用~本文题目不全,关于切片的面试真题还有哪些?欢迎评论区补充~01. 数组和切片有什么区别?Go语言中数组是固定长度的,不能动态扩容,在编译期就会确定大小,声明方式如下: