
go
果汁华
这个作者很懒,什么都没留下…
展开
-
锁和 sync 包--go学习
锁和 sync 包在一些复杂的程序中,通常通过不同线程执行不同应用来实现程序的并发。当不同线程要使用同一个变量时,经常会出现一个问题:无法预知变量被不同线程修改的顺序!(这通常被称为资源竞争,指不同线程对同一变量使用的竞争)显然这无法让人容忍,那我们该如何解决这个问题呢?经典的做法是一次只能让一个线程对共享变量进行操作。当变量被一个线程改变时(临界区),我们为它上锁,直到这个线程执行完成并...转载 2020-02-24 10:58:47 · 232 阅读 · 0 评论 -
go 中 new() 和 make() 的区别
看起来二者没有什么区别,都在堆上分配内存,但是它们的行为不同,适用于不同的类型。new(T) 为每个新的类型T分配一片内存,初始化为 0 并且返回类型为*T的内存地址:这种方法返回一个指向类型为 T,值为 0 的地址的指针,它适用于值类型如数组和结构体;它相当于&T{}。 make(T)返回一个类型为 T 的初始值,它只适用于3种内建的引用类型:切片、map 和 channel...翻译 2020-02-24 10:48:48 · 394 阅读 · 0 评论 -
函数---go学习(3)
1 介绍每一个程序都包含很多的函数:函数是基本的代码块。Go是编译型语言,所以函数编写的顺序是无关紧要的;鉴于可读性的需求,最好把main()函数写在文件的前面,其他函数按照一定逻辑顺序进行编写(例如函数被调用的顺序)。编写多个函数的主要目的是将一个需要很多行代码的复杂问题分解为一系列简单的任务(那就是函数)来解决。而且,同一个任务(函数)可以被调用多次,有助于代码重用。(事实...转载 2020-02-23 10:19:23 · 169 阅读 · 0 评论 -
控制结构 --go学习(2)
1. if-else 结构存在第三个分支,则可以使用下面这种三个独立分支的形式:if condition1 { // do something } else if condition2 { // do something else } else { // catch-all or default}else-if 分支的数量是没有限制的,但是为了代码的可读性,还是不要在 i...转载 2020-02-21 19:19:26 · 167 阅读 · 0 评论 -
基本结构和基本数据类型--go 学习(1)
1.文件名、关键字与标识符Go 的源文件以.go为后缀名存储在计算机中,这些文件名均由小写字母组成,如scanner.go。如果文件名由多个部分组成,则使用下划线_对它们进行分隔,如scanner_test.go。文件名不包含空格或其他特殊字符。_本身就是一个特殊的标识符,被称为空白标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这...转载 2020-02-21 18:58:06 · 302 阅读 · 0 评论