Go Language Loops 및 Pointer 트랩 : v.name
이 모두 "블로그"인 이유에 대한 자세한 설명
GO 언어로 for...range
고리와 포인터를 사용하는 경우 혼란스러운 문제가 발생하기 쉽습니다. 이 기사는 예제를 사용하여 for...range
Loops 및 Pointers 사용 메커니즘을 깊이 분석하고 코드 출력 결과가 모두 "블로그"인 이유를 설명합니다.
다음 코드 스 니펫은이 문제를 보여줍니다.
유형 학생 struct { 이름 문자열 나이 int } func main () { m : = make (map [String]*학생) stus : = [] 학생 { {이름 : "pprof.cn", 나이 : 18}, {이름 : "테스트", 나이 : 23}, {이름 : "블로그", 나이 : 28}, } _, stu : = 범위 stu { m [stu.name] = & stu // 문제가 여기 있습니다} K, V : = 범위 m { fmt.println (k, "=>", v.name) } }
이 코드를 실행하면 출력은 모두博客
됩니다. for...range
루프에서 stu
변수의 모든 반복이 새로운 변수를 생성하는 것은 아니기 때문입니다. 루프 전체에 걸쳐 메모리 주소가 변경되지 않은 루프 변수입니다. 따라서 &stu
항상 동일한 메모리 주소를 가리 킵니다. 각 반복은 맵의 값에 동일한 주소를 할당하고 마지막으로 맵의 모든 포인터는 마지막 stu
변수, 즉 {name: "博客", age: 28}
가리 킵니다.
해결 방법 : 변수의 새 사본을 만듭니다
이 문제를 피하려면 주소를 직접 사용하지 않고 각 반복에 stu
사본을 만들어야합니다.
_, stu : = 범위 stu { s : = stu // stu m [stu.name] = & s의 사본 생성 }
새로운 변수 s
만들어 m[stu.name] = &s
이제 s
의 메모리 주소를 가리키고 s
는 각 반복의 새로운 변수이므로 포인터가 동일한 메모리 주소를 가리키는 문제를 해결하고 최종 출력이 각 학생의 이름을 올바르게 반영합니다.
for...range
Loops와 Pointers의 기능을 이해하는 것은 효율적이고 올바른 GO 코드를 작성하는 데 중요합니다. 이러한 종류의 트랩을 피하는 핵심은 루프에서 포인터를 사용할 때 각 포인터가 다른 메모리 주소를 가리키는 것입니다.
위 내용은 GO 언어의 루프 및 포인터 문제 : V.Name '블로그'가있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

go语言有缩进。在go语言中,缩进直接使用gofmt工具格式化即可(gofmt使用tab进行缩进);gofmt工具会以标准样式的缩进和垂直对齐方式对源代码进行格式化,甚至必要情况下注释也会重新格式化。

go语言叫go的原因:想表达这门语言的运行速度、开发速度、学习速度(develop)都像gopher一样快。gopher是一种生活在加拿大的小动物,go的吉祥物就是这个小动物,它的中文名叫做囊地鼠,它们最大的特点就是挖洞速度特别快,当然可能不止是挖洞啦。

是,TiDB采用go语言编写。TiDB是一个分布式NewSQL数据库;它支持水平弹性扩展、ACID事务、标准SQL、MySQL语法和MySQL协议,具有数据强一致的高可用特性。TiDB架构中的PD储存了集群的元信息,如key在哪个TiKV节点;PD还负责集群的负载均衡以及数据分片等。PD通过内嵌etcd来支持数据分布和容错;PD采用go语言编写。

go语言需要编译。Go语言是编译型的静态语言,是一门需要编译才能运行的编程语言,也就说Go语言程序在运行之前需要通过编译器生成二进制机器码(二进制的可执行文件),随后二进制文件才能在目标机器上运行。

go语言能编译。Go语言是编译型的静态语言,是一门需要编译才能运行的编程语言。对Go语言程序进行编译的命令有两种:1、“go build”命令,可以将Go语言程序代码编译成二进制的可执行文件,但该二进制文件需要手动运行;2、“go run”命令,会在编译后直接运行Go语言程序,编译过程中会产生一个临时文件,但不会生成可执行文件。

删除map元素的两种方法:1、使用delete()函数从map中删除指定键值对,语法“delete(map, 键名)”;2、重新创建一个新的map对象,可以清空map中的所有元素,语法“var mapname map[keytype]valuetype”。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

드림위버 CS6
시각적 웹 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구
