上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 41 下一页

2023年7月15日

切片

摘要: 结构体定义 runtime/slice.go文件中 type slice struct { array unsafe.Pointer // 数组的指针 len int cap int } 扩容 通过append方法添加数据,返回一个新的slice对象,地址和之前不一样。但是原来元素地址是不变的,直到 阅读全文

posted @ 2023-07-15 10:11 王景迁 阅读(22) 评论(0) 推荐(0) 编辑

go map

摘要: map内存模型 // A header for a Go map. type hmap struct { // 元素个数,调用 len(map) 时,直接返回此值 count int flags uint8 // buckets 的对数 log_2 B uint8 // overflow 的 buc 阅读全文

posted @ 2023-07-15 10:08 王景迁 阅读(22) 评论(0) 推荐(0) 编辑

go context

摘要: 使用场景 在协程之间传递上下文 context接口 type Context interface { // 返回绑定当前context的任务取消的截止时间 // 如果没有设定期限,将返回ok == false Deadline() (deadline time.Time, ok bool) // 绑 阅读全文

posted @ 2023-07-15 10:04 王景迁 阅读(9) 评论(0) 推荐(0) 编辑

优先队列(基于二叉树的堆)

摘要: 代码出处 Go SDK container/heap/heap.go Interface 接口定义 type Interface interface { sort.Interface Push(x interface{}) // add x as element Len() Pop() interf 阅读全文

posted @ 2023-07-15 09:58 王景迁 阅读(3) 评论(0) 推荐(0) 编辑

go引用类型和值类型

摘要: 引用类型引用类型有字典类型、通道类型、函数类型、切片类型、接口类型和指针类型。 值类型值类型有基础数据类型和结构体类型以及数组类型。 阅读全文

posted @ 2023-07-15 08:17 王景迁 阅读(5) 评论(0) 推荐(0) 编辑

go单元测试显示测试用例代码覆盖率

摘要: 执行单个目录所有测试用例并生成覆盖率 go test -gcflags=all=-l -coverprofile=$GOPATH/bin/c.out . go tool cover -html=$GOPATH/bin/c.out -o=$GOPATH/bin/tag.html 执行单个测试用例并生成 阅读全文

posted @ 2023-07-15 08:16 王景迁 阅读(72) 评论(0) 推荐(0) 编辑

interface{}

摘要: 判断某个对象是否实现了某个接口 package main import "fmt" type Do interface { do() } type A struct{} func (a A) do() {} type B struct{} func main() { var do interface 阅读全文

posted @ 2023-07-15 08:13 王景迁 阅读(15) 评论(0) 推荐(0) 编辑

go目录结构和交叉编译

摘要: 环境变量 GOROOT:GO语言的安装路径GOPATH:项目目录GOBIN:执行go install go文件时,生成可执行文件的路径,通常设置为GOPATH/bin。 GOPATH目录结构 GOPATH/src目录下放源代码文件。GOPATH/pkg目录下放执行go install 目录名后生成的 阅读全文

posted @ 2023-07-15 08:09 王景迁 阅读(97) 评论(0) 推荐(0) 编辑

GO协程

摘要: goroutine 协程本意是coroutine,go协程是goroutine。线程分为内核态线程(内核线程)和用户态线程(协程)。线程由CPU调度是抢占式的,协程由用户态调度是协作式的(主动让出才执行下一个)。 N:1(N个用户线程绑定1个内核线程) 例子:python的gevent优点:协程切换 阅读全文

posted @ 2023-07-15 07:26 王景迁 阅读(42) 评论(0) 推荐(0) 编辑

go垃圾回收

摘要: 三色标记法 三色标记法配合写屏障和辅助GC。1.初始状态所有对象都是白色。2.从根出发扫描,将引用的对象标记为灰色。3.分析灰色对象是否引用了其他对象,自身标记为黑色,将它引用的其他对象标为灰色4.重复步骤3,直到灰色对象队列为空。此时白色对象即为垃圾,进行回收。 写屏障:每一轮GC开始时会初始化屏 阅读全文

posted @ 2023-07-15 07:19 王景迁 阅读(9) 评论(0) 推荐(0) 编辑

上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 41 下一页

导航