6_Map
发表于|更新于|Golang
|浏览量:
Map
概念
map 是引用类型,声明的方式一般如下:
1 | var map1 map[string]int |
k-v 操作
- 判断键值对是否存在
1 | // 因为 Go 中的 key 不存在的情况下返回的 value 会是零值 |
- 删除一个键值对
1 |
|
相对于 Python 中的字典,Go 中对 Map 数据类型的操作显得更为友好。
遍历 Map
1 | for idx, val := range map1 { |
文章作者: xhj
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 xhj的博客!
相关推荐
2024-11-10
7_结构和方法
结构和方法结构体工厂Go 中不支持向面向对象语言的方法那样构造类的子方法,但是可以根据构造子工厂的方法来实现子方法。一般来说,工厂的名字用 New 开头。 1234567891011type File struct { fd int name string}func NewFile(fd int, name string) *File { if fd < 0 { return nil } return &File{fd, name}} 如果结构体的命名开头是小写的话,可以强制要求使用结构体工厂。 匿名字段和内嵌结构体结构体可以包含一个或多个 匿名(或内嵌)字段,即这些字段没有显式的名字,只有字段的类型是必须的,此时类型就是字段的名字。匿名字段本身可以是一个结构体类型,即 结构体可以包含内嵌结构体。 可以粗略地将这个和面向对象语言中的 继承 概念相比较,随后将会看到它被用来模拟类似继承的行为。Go 语言中的继承是通过内嵌或组...
2024-11-11
8_接口和反射
接口和反射接口的定义方式1234type Namer interface { Method1(param_list) return_type Method2(param_list) return_type } 接口相对于其他面向对象的语言,是 Go 中的多态的表现。具体代码展示如下: 1234567891011121314151617181920212223242526272829303132333435363738package mainimport "fmt"type Shaper interface { Area() float32}type Square struct { side float32}func (sq *Square) Area() float32 { return sq.side * sq.side}type Rectangle struct { length, width float32}fun...
2024-11-06
3_控制结构
控制结构switch 结构Go 中的 switch-case 结构和 C++ 中的选择结构并不相同。 12345678i := 1switch i { case 0: func1() case 1: func2() // ... default: funcd()} 而 C++ 代码停止 switch 操作需要手动 break。 1234567i = 1switch(i) { case 1: func1(); break; case 2: func2(); break; //... default:funcd();} Go 中将这种特性去除,如果确实需要在执行完 case 的情况下还要继续执行,可以在后面添加关键字 fallthrough。如 Go代码: 1234567891011121314151617181920k := 6switch k {case 4: fmt.Println("was <= 4") fallthroughcase 5...
2024-11-08
5_数组与切片
数组与切片新建一个数组的方法1234aList [5]intbList = []int{1, 2}cList = []int{1: 1, 4: 2}dList = new([]int) 新建一个切片的方法12345slice := make([]int, 10)var slice []int = make([]int, 10)// 以下两种方式的效果是一样的slice := new([100]int)[0:50]slice := make([]int, 50, 100) make 函数的定义如下: 12func make([]type, len, cap)// len 为初始化时占用长度, cap 为可选参数容量 new 函数和 make 函数的区别: 主要功能都是在堆上面分配内存给需要的结构体。 new 函数为每个新的类型 T 分配一片内存,初始化为 0 并且返回 *T 的内存地址,这种申请方式会返回一个 T 类型初始值为 0 的指针。 make 函数返回一个类型为 T 的初始值,它只适用于创建 slice, map 和 chan...
2024-11-02
11_协程与通道
协程与通道并发、并行和协程协程定义 并发:一个并发程序能在一个处理器或内核使用多个线程执行 并行:一个并行程序在某个时间点能使用多个处理器资源 goroutine 是根据一个或以上的线程的可用性,映射在它们之上;协程调度器在 Go 运行的时候就能完成对协程的调度。 goroutine 和 coroutine 的区别: goroutine 意味着并行,协程一般来说并不能这样 goroutine 通过信道来相互通信;coroutine 通过让出和恢复操作来通信 协程间的信道channel 的创建123456// var identifier chan datatypevar a chan stringa = make(chan string)// ORa := make(chan string) 通信操作符 <- 发送ch <- int1 用通道 ch 发送变量 int1 接收int2 = <- ch 12345678910111213141516171819202122232425262728293031package mainimport ( ...
2024-11-03
12_网络
网络TCP 服务器服务端代码 客户端代码 HTTP 服务器服务端代码 访问并读取页面数据(网络请求)客户端代码