golang
mathieu
这个作者很懒,什么都没留下…
展开
-
go语言中指向切片的地址 - 指针的指针应用场景
今天看代码时一直不解为什么tags本身就是个切片,为啥要传给&tags给Findfunc GetTags(pageNum int, pageSize int, maps interface {}) (tags []Tag) { db.Where(maps).Offset(pageNum).Limit(pageSize).Find(&tags) return}只穿tags进去行不行?写代码验证下:func test(out *[]int) { *out原创 2020-12-08 16:03:05 · 528 阅读 · 0 评论 -
Go基础:range
参考:https://blog.csdn.net/fly910905/article/details/104438786for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。格式如下: for key, value := range oldMap { newMap[key] = value } 1st value 2nd value string index s[index] uni...原创 2020-09-09 15:48:18 · 49 阅读 · 0 评论 -
beego代码阅读——反射笔记
/*参数c是个指针,可能指向各种类型的结构体,所以此时无法使用c所以总体思路就是:新申请一块内存,类型和c一模一样,并且把所需的value都拷贝过来用反射获取一个未知变量的类型和值 -> 据此New一个新的变量 -> 还原成原始变量(此时是空值)-> 逐个字段把所需值拷贝到新的内存涉及到的知识点:根据反射获取未知变量的属性,把反射对象还原成原始数据,修改反射类型字段值参考:https://ehlxr.me/2018/01/26/golang-reflect/*/fun.原创 2020-09-09 15:00:58 · 163 阅读 · 0 评论 -
reflect.Indirect(v).Type()和reflect.TypeOf(u)的区别
最近看beego源码,看到一段反射的代码想不通为啥作者写的这么复杂func (p *ControllerRegister) addWithMethodParams(pattern string, c ControllerInterface, methodParams []*param.MethodParam, mappingMethods ...string) { reflectVal := reflect.ValueOf(c) t := reflect.Indirect(reflectVal).原创 2020-09-09 10:51:16 · 1573 阅读 · 0 评论 -
用select对channel进行多路复用
先看代码:func main() { ch := make(chan int, 1) for i := 0; i < 10; i++ { select { case x := <-ch: fmt.Println(x) case ch <- i: fmt.Println("--", i) } }}为什么输出0 2 4 8?-- 00-- 22-- 44-- 66-- 88ch的buffer size是1,这个通道的状态要原创 2020-07-01 16:08:14 · 582 阅读 · 0 评论 -
gopl 8.5章节wg.Wait()为什么要放在goroutine内部
wg.Wait()在goroutine内部// makeThumbnails6 makes thumbnails for each file received from the channel.// It returns the number of bytes occupied by the files it creates.func makeThumbnails6(filenames <-chan string) int64 { sizes := make(chan int64)原创 2020-06-29 21:25:34 · 2118 阅读 · 0 评论