Go 언어 맵의 기본을 이해하는 데 도움이 되는 기사
머리말
안녕하세요 여러분, 저는 Zhou Ba입니다. 이번에도 바둑의 기본을 배워보겠습니다.
과거 회상
위의 여러 기사에서 우리는 데이터 유형, 배열에 대해 배웠습니다. , 슬라이스 등을 사용하여 데이터를 저장하는 데 도움을 줍니다.
특히 여러 항목을 저장할 수 있고 유연하게 추가, 삭제, 수정 및 확인할 수 있는 슬라이스입니다.
하지만 슬라이스에는 여전히 불편한 점이 있습니다.
예를 들어, 학생은 name, height, weight, 나이 등. 슬라이스를 사용한다면 이렇게 보관할 수도 있겠네요.
package main
import "fmt"
func main() {
//学生1
var stu1 = []string{"张三", "188", "70KG", "18"}
//学生2
var stu2 = []string{"李四", "170", "66KG", "17"}
fmt.Println(stu1)
fmt.Println(stu2)
}
하지만 분명한 단점이 있습니다. 즉, 값을 얻으려면 subscript를 사용해야 하고 또는 값을 수정해야 한다는 것입니다. 그리고 수정하려는 값의 첨자가 어디에 있는지 계산해야 하는데, 이는 상대적으로 그리 편리하지 않습니다. 을 소개합니다. map은 키-값 쌍(키-값) 저장 구조로, 순서가 지정되지 않고 내부적으로 해시(해시) 를 사용합니다. 구현, 성능 매우 높습니다. Go에서 맵은 reference 타입이고, 메모리 맵은 다음과 같습니다. 代码 代码 ps:关于这两种方式,哪个使用的多。 我的建议是,如果确定有多少个字段,就使用第一种,如果不确定多少个字段,是动态添加的,用第二种。 使用第二种要大概估算好容量,超过会触发自动扩容机制,可能会产生那么一丝丝的性能影响。 遍历map,通常只用一种方式 代码 只遍历key 删除map里面的值需要用到 代码 map在取值时,尽可能的判断一下是否key存在 上述我们学习了Go基础之map。如果在操作过程中有任何问题,记得下面讨论区留言,我们看到会第一时间解决问题。파이썬에서는 사전이라고 하고, 자바에서는 리스트라고 부르는 map
map基本使用
map语法
方式一,声明时赋值
var 变量名 = map[key类型][value类型]{
key:value,
key:value,//必须使用,结尾,否则会报错
}
//方式二,make方式
var 变量名 = make(map[key类型]value类型, 容量(cap))
//如果map是make方式声明的,第二个参数直接就是容量,元素个数是0,没有第三个参数
示例
方式一,声明时赋值
package main
import "fmt"
func main() {
var stu1 = map[string]string{
"Name": "张三",
"Age": "18",
"height": "188", //每行都要以,结尾,
}
var stu2 = map[string]string{
"Name": "李四",
"Age": "20",
"height": "170", //每行都要以,结尾,
}
fmt.Println(stu1, stu2)
//map[Age:18 Name:张三 height:188] map[Age:20 Name:李四 height:170]
}
方式二,make方式
package main
import "fmt"
func main() {
var stu1 = make(map[string]string,10)
stu1["Name"] = "张三"
stu1["Age"] = "18"
stu1["height"] = "188"
var stu2 = make(map[string]string,10)
stu2["Name"] = "李四"
stu2["Age"] = "20"
stu2["height"] = "170"
fmt.Println(stu1,stu2)
//map[Age:18 Name:张三 height:188] map[Age:20 Name:李四 height:170]
}
遍历map(查)
for range
。package main
import "fmt"
func main() {
var stu1 = make(map[string]string, 10)
stu1["Name"] = "张三"
stu1["Age"] = "18"
stu1["height"] = "188"
for key, value := range stu1 {
//map遍历时,key值键,value是值
fmt.Println(key, value)
}
}
package main
import "fmt"
func main() {
var stu1 = make(map[string]string, 10)
stu1["Name"] = "张三"
stu1["Age"] = "18"
stu1["height"] = "188"
for key := range stu1 {
//只遍历key
fmt.Println(key)
}
}
修改map的值(改)
package main
import "fmt"
func main() {
//var stu1 = make(map[string]string, 10)
//stu1["Name"] = "张三"
//stu1["Age"] = "18"
//stu1["height"] = "188"
//
//stu1["Name"] = "张三666"//修改
//fmt.Println(stu1)
//同上
var stu1 = map[string]string{
"Name": "张三",
"Age": "18",
"height": "188", //每行都要以,结尾,
}
stu1["Name"] = "张三666"//修改
fmt.Println(stu1)
}
删除map里面的值
delete
。package main
import "fmt"
func main() {
var stu1 = map[string]string{
"Name": "张三",
"Age": "18",
"height": "188", //每行都要以,结尾,
}
fmt.Println(stu1) //map[Age:18 Name:张三 height:188]
delete(stu1, "Name") //删除key以及key对应的值
fmt.Println(stu1) //map[Age:18 height:188]
}
map取值注意事项
package main
import "fmt"
func main() {
var stu1 = map[string]string{
"Name": "张三",
"Age": "18",
"height": "188", //每行都要以,结尾,
}
//result := stu1["Name"]//key存在,没问题
//fmt.Println(result)//张三
//result := stu1["Names"]//手一抖,key打错了
//fmt.Println(result)//结果为空,显然不是太友好
//取值标准用法
result, ok := stu1["Name"]
//如果key存在,ok为true,如果key不存在,ok为false
fmt.Println(result,ok)//张三 true
if ok {
fmt.Println(result)
} else {
fmt.Println("key不存在")
}
}
总结
위 내용은 Go 언어 맵의 기본을 이해하는 데 도움이 되는 기사의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

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

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Go Language의 부동 소수점 번호 작동에 사용되는 라이브러리는 정확도를 보장하는 방법을 소개합니다.

Go Crawler Colly의 대기열 스레딩 문제는 Colly Crawler 라이브러리를 GO 언어로 사용하는 문제를 탐구합니다. � ...

Go Language의 문자열 인쇄의 차이 : println 및 String () 함수 사용 효과의 차이가 진행 중입니다 ...

골란드의 사용자 정의 구조 레이블이 표시되지 않으면 어떻게해야합니까? Go Language 개발을 위해 Goland를 사용할 때 많은 개발자가 사용자 정의 구조 태그를 만날 것입니다 ...

Go Language에서 메시지 대기열을 구현하기 위해 Redisstream을 사용하는 문제는 Go Language와 Redis를 사용하는 것입니다 ...

GO의 어떤 라이브러리가 대기업이나 잘 알려진 오픈 소스 프로젝트에서 개발 했습니까? GO에 프로그래밍 할 때 개발자는 종종 몇 가지 일반적인 요구를 만납니다.

GO 언어에서 구조를 정의하는 두 가지 방법 : VAR과 유형 키워드의 차이. 구조를 정의 할 때 Go Language는 종종 두 가지 다른 글쓰기 방법을 본다 : 첫째 ...

sql.open을 사용할 때 DSN에 오류가 발생하지 않는 이유는 무엇입니까? Go Language, SQL.open ...
