Go基础知识点(九) | 青训营笔记

54 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第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)

image.png

查询某个键的值:

var key = "name"
var value = m1[key]
fmt.Println("name:", value)

image.png

判断某个键是否存在

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)
image.png

map遍历:

只遍历键:

for k := range m1 {
   fmt.Println("k:", k)
}

image.png

遍历键和值:

for k1, v1 := range m1 {
   fmt.Printf("k1:%v", k1)
   fmt.Printf(" v1:%v\n", v1)
}
image.png

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)
}
image.png

明天继续加油~

加油啊~