随笔分类 - Go的进阶之路
摘要:参考网址: https://blog.csdn.net/wangshubo1989/article/details/70177928
阅读全文
摘要:一、文件读写 1.1 os.File os.File封装所有文件相关操作, 是一个自定义的struct。 a. 打开一个文件进行读操作: os.Open(name string) (*File, error) Open是以读的方式打开文件(底层调用的是Openfile函数)。 b. 关闭一个文件:
阅读全文
摘要:一、Waitgroup介绍 1.1 背景 会有一个问题,如果sleep时间都结束了,但是sendData和getdata所在的函数还没执行完,那么也会被中断执行,如何解决呢: 解决办法: 1、死循环:( 缺点:有时生产者和消费者已经执行完,却依然还在死循环,退不出。) 2、标识位,也就是全局变量和加
阅读全文
摘要:一、线程安全介绍 1.1 现实例子 A. 多个goroutine同时操作一个资源,这个资源又叫临界区 B. 现实生活中的十字路口,通过红路灯实现线程安全 C. 火车上的厕所(进去之后先加锁,在上厕所,不加锁两个人都进去就出问题了,出来后在解锁,别人就可以使用了),通过互斥锁来实现线程安全 D、在程序
阅读全文
摘要:一、不同goroutine之间如何进行通讯? 1、全局变量和锁同步 缺点:多个goroutine要通信时,定义太多的全局变量(每个全局变量功能不一样),不好维护 2、Channel 二、channel概念 a. 类似unix中管道(pipe) b. 先进先出 c. 线程安全,多个goroutine同
阅读全文
摘要:一、创建goroutine 1)在go语言中,每一个并发的执行单元叫做一个goroutine; 2)当一个程序启动时,其主函数即在一个单独的goroutine中运行,一般这个goroutine是主goroutine;如果想要创建新的goroutine,只需要再执行普通函数或者方法的的前面加上关键字g
阅读全文
摘要:参考网址如下: https://www.cnblogs.com/fengbohello/p/4665883.html
阅读全文
摘要:一、方法的定义 之前我们学习了结构体(struct),其仅仅是对数据的封装,并没有行为方法,还不是一个完全的面向对象的思路,所以现在我们来学习在结构体的基础上如何去定义一个方法。结构体(类)+方法=完整的面向对象 1.1 定义与声明 1)和其他语言不一样, Go的方法采用另外一种方式实现。 2)Go
阅读全文
摘要:一、 变量和内存地址 每个变量都有内存地址,可以说通过变量来操作对应大小的内存 注意:通过&符号可以获取变量的内存地址 通过下面例子来理解下: 实例1-1 执行结果如下图所示: 二、 指针类型 2.1 定义 普通变量存储的是对应类型的值,这些类型就叫值类型; 指针类型的变量存储的是一个地址,所以又叫
阅读全文
摘要:1、练习1 生成一个随机数,让一个用户去猜这个数是多少? 代码示例如下: 执行结果如下: 补充: Scanf那里一定要加上\n,因为加上的话就已经表示以回车换行符为止,这样就已经保证了能够获取到用户输入的真正的数字,你如果不加\n,他就不行了,就会识别2次一个是你输入的数字,一个是回车。 2、练习2
阅读全文
摘要:1、练习1 题目:使用fmt分别打印字符串、二进制、十进制、十六进制、浮点数。 执行结果:
阅读全文
摘要:一、结构体详解 1.1 声明和定义 1、Go中面向对象是通过struct来实现的, struct是用户自定义的类型 2、Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。 3、结构体是由一系列具有相同类型或不同类型的数据构成的数据集合 4、结构体是将零个或者多个
阅读全文
摘要:一、 函数介绍 1.1 定义 函数:有输入、有输出,用来执行一个指定任务的代码块。 解释: 1.2 特点 golang函数的特点: 1)不支持重载,即一个包不能有两个名字一样的函数 2)函数也是一种类型,一个函数可以赋值给变量 3)匿名函数 4)多返回值 1.3无参数和无返回值的函数 1.4 小练习
阅读全文
摘要:一、map数据类型 1.1 声明和定义 map类型是一个key-value的数据结构,又叫字典。(map也是可以扩容的,内部自动扩容) 声明: var map1 map[keytype]valuetype 例子: 注意: 1.声明是不会分配内存的,需要make初始化。 2.map必须初始化才能使用,
阅读全文
摘要:https://blog.csdn.net/iamlihongwei/article/details/78842857 https://studygolang.com/articles/1952 https://www.jb51.net/article/61622.htm https://www.j
阅读全文
摘要:一、 引用类型 引用类型理解为(C语言):指针 Golang中只有三种引用类型:slice(切片)、map(字典)、channel(管道); 实例1-1 执行结果: 解释: 上面定义了一个数组a,它是引用类型(slice切片),被b引用(指针)后,当b发生变化后a也发生变化。 二、 值类型 Go语言
阅读全文
摘要:一、数组(array) 1.1 数组定义 1)含义: 数组是同一类型的元素集合。 数组是具有固定长度并拥有零个或者多个相同数据类型元素的序列。 2)定义一个数组的方法: var 变量名[len] type 例子: var a[5]int //5个整数(int)类型的数组 var a[5]string
阅读全文
浙公网安备 33010602011771号