作者:AlbertWen
添加时间:2017-10-27 12:54:37
修改时间:2025-05-27 23:06:27
分类:
14.Golang/Ruby
编辑
goroutine
goroutine是Go并行设计的核心。goroutine说到底其实就是线程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。
goroutine是通过Go的runtime管理的一个线程管理器。goroutine通过go关键字实现了,其实就是一个普通的函数。
go hello(a, b, c)
作者:AlbertWen
添加时间:2017-10-29 20:29:19
修改时间:2025-05-22 19:38:47
分类:
14.Golang/Ruby
编辑
sync.Once.Do(f func()) 是一个非常有意思的东西,能保证 once 只执行一次,无论你是否更换 once.Do(xx) 这里的方法,这个 sync.Once块 只会执行一次。
作者:AlbertWen
添加时间:2017-10-29 09:46:48
修改时间:2025-05-29 11:50:22
分类:
14.Golang/Ruby
编辑
作者:AlbertWen
添加时间:2017-10-29 20:29:54
修改时间:2025-05-25 22:35:29
分类:
14.Golang/Ruby
编辑
Go 还有一些特有的流程控制语句,其中一个就是 defer 语句。该语句用于延迟调用指定的函数,它只能出现在函数的内部,由 defer 关键字以及针对某个函数的调用表达式组成。这里被调用的函数称为 延迟函数。一个简单的例子如下:
func outerFunc() {
defer fmt.Println("函数执行结束前一刻才会被打印")
fmt.Println("第一个被打印")
}
作者:AlbertWen
添加时间:2017-10-27 13:06:47
修改时间:2025-05-31 07:07:32
分类:
14.Golang/Ruby
编辑
一、数组
与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列。
(1)数组的创建
数组有 3 种创建方式:
1) [length]Type
2) [length]Type{value1, value2, ... , valueN}
作者:AlbertWen
添加时间:2017-10-29 20:41:24
修改时间:2025-05-22 18:59:27
分类:
14.Golang/Ruby
编辑
项目地址:https://github.com/fsnotify/fsnotify
fsnotify 能监控指定文件夹内 文件的修改情况,如 文件的 增加、删除、修改、重命名等操作。
作者:AlbertWen
添加时间:2017-10-29 10:14:29
修改时间:2025-05-29 01:02:13
分类:
14.Golang/Ruby
编辑
go test 命令用于对 Go 语言编写的程序进行测试。这种测试是以 代码包 为单位的。当然,这还需要测试源码文件的帮助。关于怎样编写并写好 Go 程序测试代码,我们会在本章的第二节加以详述。在这里,我们只讨论怎样使用命令启动测试。
go test 命令会自动测试每一个指定的 代码包。当然,前提是指定的代码包中存在测试源码文件。测试源码文件是名称以“_test.go”为后缀的、内含若干测试函数的源码文件。测试函数一般是以“Test”为名称前缀并有一个类型为“testing.T”的参数声明的函数.
作者:AlbertWen
添加时间:2018-07-18 09:52:18
修改时间:2025-05-22 19:31:53
分类:
14.Golang/Ruby
编辑
Tao同时也是我用Go语言开发的一个异步的TCP服务器框架(TCP Asynchronous Go server FramewOrk),秉承Go语言“Less is more”的极简主义哲学,它能穿透一切表象,带你一窥网络编程的世界,让你从此彻底摆脱只会写“socket-bind-listen-accept”的窘境。本文将简单讨论一下这个框架的设计思路以及自己的一些思考。
作者:AlbertWen
添加时间:2017-11-23 13:12:29
修改时间:2025-05-22 19:37:58
分类:
14.Golang/Ruby
编辑
简介
Golang 中的创建一个新的 goroutine , 并不会返回像c语言类似的pid,所有我们不能从外部杀死某个goroutine,所有我就得让它自己结束,之前我们用 channel + select 的方式,来解决这个问题,但是有些场景实现起来比较麻烦,例如由一个请求衍生出的各个 goroutine 之间需要满足一定的约束关系,以实现一些诸如有效期,中止routine树,传递请求全局变量之类的功能。于是google 就为我们提供一个解决方案,开源了 context 包。使用 context 实现上下文功能约定需要在你的方法的传入参数的第一个传入一个 context.Context 类型的变量。
作者:AlbertWen
添加时间:2017-10-27 12:52:02
修改时间:2025-05-26 15:35:44
分类:
14.Golang/Ruby
编辑
struct
Go语言中,也和C或者其他语言一样,我们可以声明新的类型,作为其它类型的属性或字段的容器。例如,我们可以创建一个自定义类型person代表一个人的实体。这个实体拥有属性:姓名和年龄。这样的类型我们称之struct。如下代码所示:
type person struct {
name string
age int
}