go
蓝奕世
不会,我可以学;落后,我可以追赶;跌倒,我可以站起来,但是台下的不能总是我。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
初识go语言---究竟为什么会出现all goroutines are asleep - deadlock!
很难过对于go的chan没理解透透的~ 该说不说,看了很多出现all goroutines are asleep - deadlock!的原因,但是内心还是不是很理解,不知道为什么看了很多的文章,但是就是不理解。 所以今天一定要弄懂 先看一下这段代码,之前一直有这种好奇:究竟为什么既有进chan的内容,又有出chan的内容,代码直接就会死在c <- 42 func main() { c := make(chan int) c <- 42 // write to a ch原创 2021-05-07 19:11:09 · 369 阅读 · 0 评论 -
初识go语言---<<和>>分别表示什么
今天有个同事问我<<和>>是什么意思。。。如此简单的问题出自一个2年开发经验的嘴里略显尴尬。。还是总结一下吧。。 简单的来说就是像左移位和像右移位 比如说0010 向左移1位就是0100,所左移位就是*2 向右移位就是0001也就是/2 那么简单的说其实就是3<<4 可以表示为3乘以2的4次方 那么简单的说其实就是2>>3 可以表示为2除以2的3次方 ...原创 2021-05-07 11:32:10 · 2829 阅读 · 0 评论 -
初识go语言---关于chan的理解
现在业务需要用到多线程与chan去配合使用来解决一定的问题。 但是由于之前没太好好的了解过go的chan,导致产生了许多误区。 这里简单做个笔记,日后继续补充 首先chan分为有缓存的chan和无缓存的chan, 有缓存的chan就是定义的chan有长度,当一些协程往进去存东西的时候,如果到达了最大长度,chan满了,就会被阻塞,停止存东西,直到拿东西的协程将东西拿走,chan有空间了以后才会继续存东西。 无缓存的chan就是chan没有规定长度的chan,这个时候,如果没有从chan中拿东西的,或者没有给原创 2021-03-31 18:26:27 · 981 阅读 · 0 评论 -
初识go语言---为什么能将空struct赋值给interface,这样不空指针?
在了解iris框架的时候,经常看到有这样去写的使用一个空结构体作为接收器,来调用方法,有点好奇这样做有什么意义。 就像下图这样,使用空结构体来作为接收器调用方法 空结构体有以下几大特点, 1、不占用内存地址。 2、地址不变 首先我们知道interface定义的是抽象方法,而下面的func是它的具体实现(这个和java差不多的意思),但是我们知道,在java中interface是没有办法实例化,因为他是抽象的。那么这个操作的作用是: 首先NewEntraceRepository这个方法返回了一个空结构体的指原创 2021-03-08 16:35:54 · 2632 阅读 · 0 评论 -
初识go语言---mac如何更新go sdk
好久之前装的go语言的sdk,好长时间没有使用导致版本过低,现在引入一些包以后就开始报错,需要更新go的版本。 这简单啊直接下载go语言的包然后替换到原来的相对路径下就可以了 1.删除原来的sdk cd /usr/loacl rm -rf go 2.下载go 新版本sdk,你要是需要其他版本直接修改版本号就可以了 https://dl.google.com/go/go1.15.darwin-amd64.tar.gz 3.将下载的go版本替换到/usr/loacl sudo cp -r go /usr/loc原创 2021-02-26 14:33:34 · 5161 阅读 · 0 评论 -
初识go语言---go的值接收和指针接收有什么区别&&改变结构体属性的时候为什么一定要传指针变量
首先我们来看一个例子 package main import "fmt" //go 的struct是值类型 type user struct { name string email string } //使用值接受者 func (u user) notify(){ fmt.Printf("Sending User Email To %s<%s>\n",u.name,u.email) } //使用指针接受者 func (u *user) changeEmail(email string原创 2021-03-05 10:46:23 · 1944 阅读 · 4 评论
分享