안녕하세요 여러분, 저는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!