这是我参与「第五届青训营 」笔记创作活动的第11天.
map是一种key:value键值对的数据结构容器.map内部实现是哈希表(hash).
map最重要的一点是通过key来快速检索数据,key类似于索引,指向数据的值.
map是引用类型的.
var m1 map[string]string
m1 = make(map[string]string)
//m1 := make(map[string]string)//简洁写法
m1["name"] = "zhangsan"
m1["age"] = "12"
m1["email"] = "123@qq.com"
fmt.Println("m1:", m1)
var m2 = map[string]string{
"name": "zhangsan",
"age": "12",
"email": "123@qq.com",
}
fmt.Println("m2:", m2)
查询某个键的值:
var key = "name"
var value = m1[key]
fmt.Println("name:", value)
判断某个键是否存在
go语言中有个判断map中键是否存在的特殊方法,格式如下:
value,ok := map[key]
如果ok为true,则存在,否则,不存在.
v, ok := m1["name"]
fmt.Println("v:", v)
fmt.Println("ok:", ok)
fmt.Println("-------------------")
v, ok = m1["age1"]
fmt.Println("v:", v)
fmt.Println("ok:", ok)
map遍历:
只遍历键:
for k := range m1 {
fmt.Println("k:", k)
}
遍历键和值:
for k1, v1 := range m1 {
fmt.Printf("k1:%v", k1)
fmt.Printf(" v1:%v\n", v1)
}
go指针:
go语言中的函数传参都是值拷贝,当我们想要修改某个变量的时候,我们可以创建一个指向该变量地址的指针变量,传递数据使用指针,而无须拷贝数据.
指针类型不能进行偏移和运算.
go语言中的指针操作非常简单,只需要记住两个符号:&(取地址)和*(根据地址取值)
指针地址和指针类型:
每个变量在运行时都有一个地址,这个地址代表变量在内存中的位置.go语言中使用&字符放在变量前对变量进行取地址操作,go语言中的值类型(int,float,bool,string,array,struct),都有对应的指针类型,*int,*int64,*string等.
指针语法:
一个指针变量指向了一个值的内存地址.(也就是我们声明了一个指针之后,可以像变量赋值一样,把一个值的内存地址放入到指针当中)
类似于变量和常量,在使用指针前,你需要声明指针,指针声明格式如下:
var var_name var_type
var_name : 指针名
var_type : 指针类型
- : 用于指定变量是一个指针
import "fmt"
func main() {
var ip *int
fmt.Println("ip:", ip)
fmt.Printf("ip:%T\n", ip)
var i int = 100
ip = &i
fmt.Println("ip:", ip)
fmt.Println("&i:", &i)
fmt.Println(*ip)
var sp *string
var s string = "hello"
sp = &s
fmt.Printf("sp:%T\n", sp)
fmt.Println("sp:", *sp)
var bp *bool
var b bool = true
fmt.Printf("bp:%T\n", bp)
bp = &b
fmt.Println("bp:", *bp)
}
明天继续加油~
加油啊~