摘要: 1.定义 函数是结构化编程的最小单元模式。它将复杂的算法过程分解为若干个较小任务,隐藏相关细节,使程序结构更加清晰,易于维护。函数被设计成相对独立,通过接收输入参数完成一段算法指令,输出或存储相关结果。一个函数的声明通常包括关键字func、函数名、分别由圆括号包裹的列表参数和结果列表,以及由花括号包 阅读全文
posted @ 2018-12-11 19:16 明王不动心 阅读(596) 评论(0) 推荐(0) 编辑
摘要: 在Go语言里面,你不仅可以使用原子函数和互斥锁来保证对共享资源的安全访问以消除竞争状态, 还可以使用通道,通过发送和接收需要共享的资源,在goroutine之间做同步。 当一个资源需要在goroutine之间共享时,通道在goroutine之间架起了一个管道,并提供了确保同步交换数据的机制。 声明通 阅读全文
posted @ 2018-12-11 16:46 明王不动心 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 通常程序会被编写为一个顺序执行并完成一个独立任务的代码。 如果没有特别的需求,最好总是这样写代码,因为这种类型的程序通常很容易写,也容易维护。 不过也有一些情况下,并行执行多个任务会有更大的好处。 一个例子是,Web服务需要在各自独立的套接字上同时接收多个数据请求。 每个套接字请求都是独立的,可以完 阅读全文
posted @ 2018-12-11 15:06 明王不动心 阅读(826) 评论(0) 推荐(0) 编辑
摘要: 相比Erlang,go并未实现严格的并发安全。允许全局变量、指针、引用类型这些非安全内存共享操作,就需要开发人员自行维护数据一致和完整性。Go鼓励使用CSP通道,以通信来代替内存共享,实现并发安全。作为CSP核心,通道(channel)是显式地,要求操作双方必须知道数据类型和具体通道,并不关心另一端 阅读全文
posted @ 2018-12-11 02:53 明王不动心 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 并发与并行的区别: 并发:逻辑上具备同时处理多个任务的能力。 并行:物理上在同一时刻执行多个并发任务。通常都会说程序是并发设计的,也就是说它允许多个任务同时执行,但实际上并不一定真在同一时刻发生。在单核处理器上,它们能以间隔方式切换执行。而并行则依赖多核处理器等物理设备,让多个任务真正在同一时刻执行 阅读全文
posted @ 2018-12-11 02:40 明王不动心 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 在声明一个新类型之后,声明一个该类型的方法之前,需要先回答一个问题:这个类型的本质是什么。 如果给这个类型增加或删除某个值,是要创建一个新值,还是要更改当前的值? 如果是要创建一个新值,该类型的方法就使用值接收者。如果是要修改当前值,就使用指针接收者。 这个答案也会影响程序内部传递这个类型的值的方式 阅读全文
posted @ 2018-12-11 01:08 明王不动心 阅读(641) 评论(0) 推荐(0) 编辑