
Go
shaoduo
本人从事计算机3年,计算机硕士。博客将收录我工作中遇到的问题和经验,希望能帮到您
展开
-
Golang中数组和切片的区别
一句话总结:切片的底层是数组,可以理解为切片是动态数组,注意两者初始化和函数参数的区别。1、初始化:数组需要指定大小,不指定也会根据初始化的自动推算出大小,不可改变数组: a := [...]int{1,2,3} 或 var a = [...]int{1, 2, 3} a := [3]int{1,2,3} 或 var a = [3]int {1, 2, 3}切片...原创 2019-05-29 15:27:53 · 1507 阅读 · 0 评论 -
Goroutine协程之间的数据沟通的方式
一个服务器物理线程能够跑多个goroutine,成千上万个goroutine 实际上跑在物理线程上的也就几十个,但是java和c++创建成千上万个线程会使得系统反应更慢,这是为什么goroutine能很快的原因。那么goroutine协程之间是如何进行通信的呢?有两种方式,第一使用全局变量和锁同步:读写锁或互斥锁对全局变量进行加锁,实现多个goroute的数据共享。第二:Channel...原创 2019-06-19 15:52:20 · 2557 阅读 · 0 评论 -
Go单元测试
新建一个文件夹 和两个文件, go的单元测试文件规定必须以 _test.go结尾 其格式为 *_test.go 其中*的位置随便取名即可。calc.gopackage main//正确的func add(a int, b int) int { return (a + b)}//错误的函数func sub(a int, b int) int { retu...原创 2019-06-19 21:33:55 · 1466 阅读 · 0 评论 -
Go的切片原理详解
前言Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大Go的切片类型为处理同类型数据序列提供一个方便而高效的方式。 切片有些类似于其他语言中的数组,但是有一些不同寻常的特性。 本文将深入切片的本质,并讲解它的用法。切片数组虽然有适用它们的...原创 2019-06-21 19:19:21 · 3939 阅读 · 0 评论 -
GO select用法详解
golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。在执行select语句的时候,运行时系统会自上而下地判断每个case中的发送或接收操作是否可以被立即执行(立即执行:意思是当前Goroutine不会因此操作而被阻塞)select的用法与switch非常类似,由select开始一个新的选择块,每个选择条件由case语句来描述。与switch语句可以...转载 2019-07-02 16:59:00 · 1185 阅读 · 0 评论