GO
文章平均质量分 63
liduanwh
这个作者很懒,什么都没留下…
展开
-
golang string和[]byte的对比
为啥string和[]byte类型转换需要一定的代价?为啥内置函数copy会有一种特殊情况copy(dst []byte, src string) int?string和[]byte,底层都是数组,但为什么[]byte比string灵活,拼接性能也更高(动态字符串拼接性能对比)?今天看了源码探究了一下。以下所有观点都是个人愚见,有不同建议或补充的的欢迎emial我aboutme何为string?什...转载 2018-04-16 09:58:52 · 750 阅读 · 0 评论 -
Golang中new和make的区别
new会分配结构空间,并初始化为清空为零,不进一步初始化 new之后需要一个指针来指向这个结构 make会分配结构空间及其附属空间,并完成其间的指针初始化 make返回这个结构空间,不另外分配一个指针例子new: var p *[]int = new([]int) 或 p := new([]int) 以上分配了一个slice结构,但是结构中的...转载 2018-04-16 10:28:53 · 213 阅读 · 0 评论 -
go语言坑之for range
go只提供了一种循环方式,即for循环,在使用时可以像c那样使用,也可以通过for range方式遍历容器类型如数组、切片和映射。但是在使用for range时,如果使用不当,就会出现一些问题,导致程序运行行为不如预期。比如,下面的示例程序将遍历一个切片,并将切片的值当成映射的键和值存入,切片类型是一个int型,映射的类型是键为int型,值为*int,即值是一个地址。123456789101112...转载 2018-04-16 11:28:16 · 318 阅读 · 0 评论 -
golang的select典型用法
golang 的 select 的功能和 select, poll, epoll 相似,就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。示例:ch1 := make (chan int, 1) ch2 := make (chan int, 1) ... select { case <-ch1: fmt.Println("ch1 pop one element") ca...转载 2018-04-17 15:19:51 · 4781 阅读 · 0 评论 -
Go语言并发与并行学习笔记(一)
如果不是我对真正并行的线程的追求,就不会认识到Go有多么的迷人。Go语言从语言层面上就支持了并发,这与其他语言大不一样,不像以前我们要用Thread库 来新建线程,还要用线程安全的队列库来共享数据。以下是我入门的学习笔记。首先,并行!=并发, 两者是不同的,可以参考:http://concur.rspace.googlecode.com/hg/talk/concur.htmlGo语言的gorout...转载 2018-04-17 17:11:29 · 101 阅读 · 0 评论 -
Go语言并发与并行学习笔记(二)
Go语言的并发和并行不知道你有没有注意到一个现象,还是这段代码,如果我跑在两个goroutines里面的话:var quit chan int = make(chan int) func loop() { for i := 0; i < 10; i++ { fmt.Printf("%d ", i) } quit <- 0 } func ma...转载 2018-04-17 17:32:31 · 201 阅读 · 0 评论 -
Golang defer
在golang当中,defer代码块会在函数调用链表中增加一个函数调用。这个函数调用不是普通的函数调用,而是会在函数正常返回,也就是return之后添加一个函数调用。因此,defer通常用来释放函数内部变量。为了更好的学习defer的行为,我们首先来看下面一段代码:func CopyFile(dstName, srcName string) (written int64, err error) {...转载 2018-04-17 17:43:06 · 125 阅读 · 0 评论 -
GoLang的接口,指针等等
直接上代码:首先,我定了三个接口、一个结构和三个方法:type DeptModeFull interface { Name() string SetName(name string) Relocate(building string, floor uint...转载 2018-04-23 21:54:00 · 1281 阅读 · 0 评论 -
GO语言中的StructTag类型
StructTag是什么?在Go语言里,StructTag是一个标记字符串,此字符串可跟随在Struct中字段定义的后面。StructTag就是一系列的 key:”value” 形式的组合,其中key是一个不可为空的字符串,key-value组合可以有多个,空格分隔。 StructTag有什么用?!StructTag主要解决了不同类型数据集合间(Struct,Json,Table等)转换中键值K...转载 2018-09-25 20:53:14 · 1070 阅读 · 0 评论