![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础
sublio
这个作者很懒,什么都没留下…
展开
-
Golang学习笔记:sync.Once||sync.WaitGroup||sync.Pool
转载请注明出处: 全系列目录:https://blog.csdn.net/sublio/article/details/106480267 sync.Once||sync.WaitGroup||sync.Pool sync.Once 只执行一次 开箱即用 var once synv.Once once.Do(func() {fmt.Println("Once!")}) sync.WaitGroup 开箱即用 不应该复制。 有一个代表计数的字节.原创 2020-06-02 19:50:19 · 185 阅读 · 0 评论 -
Golang学习笔记:原子操作
转载请注明出处: 全系列目录:https://blog.csdn.net/sublio/article/details/106480267 原子操作 目录 简介 类型 增或减Add 比较并交换CAS 载入Load 存储Store 交换Swap 原子值sync/atomic.Value 简介 执行过程中不能被中断的操作。在针对某个值的操作过程中,CPU绝不会再去执行其它针对该值的操作,无论这些其他操作是否是原子操作。 对于不能被取地址的值是无法进行原子操作的。 类型原创 2020-06-02 19:45:51 · 920 阅读 · 1 评论 -
Golang学习笔记:锁和条件变量
转载请注明出处: 全系列目录:https://blog.csdn.net/sublio/article/details/106480267 锁 与 条件变量 目录 互斥锁 读写锁 条件变量 参考文献 互斥锁 简单声明即可使用: var mutex sync.Mutex mutex.Lock() mutex.Unlock() (首次使用后?)不得复制(参考参考文献2),原因类似原子类型4(原子操作文档),解决方案:使用指针值。 应该配合defer使用及时.原创 2020-06-02 19:31:57 · 495 阅读 · 0 评论 -
Golang学习笔记:目录
转载请注明出处: 高级类型:https://blog.csdn.net/sublio/article/details/106478300 基本控制流程:https://blog.csdn.net/sublio/article/details/106478408 通道Channel:https://blog.csdn.net/sublio/article/details/106478103 定时器:https://blog.csdn.net/sublio/article/details/1064778原创 2020-06-01 19:38:25 · 182 阅读 · 0 评论 -
Golang学习笔记:基本控制流程
基本控制流程 代码块 有花括号构成 重新声明外层代码块声明过的标识符,此时外层空间外层代码块的那个同名标识符被屏蔽了 func main() { a := 1 if a == 1 { var a string fmt.Println(a) { var a []int fmt.Println(len(a)) } } } switch 同一个case后面可以接多个表达式,关系为或 fallthrought向下一个case转移流程控制权 for与rang原创 2020-06-01 17:44:06 · 195 阅读 · 0 评论 -
Golang学习笔记:高级类型
高级类型 数组 长度不可变。 [...]int{1,2,3}不用指定长度,为3。 切片 内部结构三个元素:指向底层数组某个元素的指针;切片的长度;切片的容量。 容量cap:从指针指向的元素到底层最后一个元素的元素个数。 当底层数组不足以完成append的操作,会换一个更长的底层数组(一开始两倍长度?)。 零值为nil,长度为0,可以直接append操作。 map 散列表,关联数组。 零值为nil,长度为0,不可以进行取值等操作。原创 2020-06-01 17:39:51 · 195 阅读 · 0 评论 -
Golang学习笔记:通道Channel(以通信作为手段来共享内存)
通道类型:以通信作为手段来共享内存 Channel(注:引用类型,零值为nil不能直接用) 声明和初始化 三种(后两种直接声明使用没有意义):chan T | chan<- T | chan-> T;其中T表示类型。 别名声明:type IntChan chan int 变量声明:var intChan chan int 缓冲通道初始化:make(chan int, 10) len表示通道中已经存在的元素的个数,会有所变化。 .原创 2020-06-01 17:32:51 · 1156 阅读 · 0 评论 -
Golang学习笔记:定时器
Timer和Ticker Timer(一次) 不能直接用复合字面量来初始化。 time.NewTimer(time.Duration)初始化。 例子:timer := time.NewTimer(3 * time.Hour + time.Minute) 到期后向其通知通道(timer.C)发送到期的绝对到期时间(初始化时间 + 相对到期时间)。 timer.C是类型为chan time.Timer的接受通道(定时器内部为双向,可以向它发送元素)。原创 2020-06-01 17:23:35 · 240 阅读 · 0 评论