摘要: 通常使用互斥锁(Mutex)这一数据结构来保证每次只有一个 Go 程能够访问一个共享的变量 sync.Mutex: Go 标准库中提供了 sync.Mutex 互斥锁类型及其两个方法: Lock() Unlock() 我们可以通过在代码前调用Lock方法,在代码后调用Unlock方法来保证一段代码的 阅读全文
posted @ 2019-07-02 12:40 VingB2by 阅读(139) 评论(0) 推荐(0) 编辑
摘要: select 是 Go 中类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收 select 随机执行一个可运行的 case,如果没有 case 可运行,它将阻塞,直到有 case 可运行 一个默认的子句应该总是可运行的 当select中的其它分支都没有准备 阅读全文
posted @ 2019-07-02 12:39 VingB2by 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 由于goroutine中资源共享内存,为了避免互斥等问题保证数据正确性,引入通道的概念(channel) Go 语言中的通道(channel)是一种特殊的类型。在任何时候,同时只能有一个 goroutine 访问通道进行发送和获取数据。goroutine 间通过通道就可以通信。 通道像一个传送带或者 阅读全文
posted @ 2019-07-02 12:38 VingB2by 阅读(243) 评论(0) 推荐(0) 编辑
摘要: Go 程(goroutine)是由 Go 运行时管理的轻量级线程。 当一个goroutine创建时,会和其他goroutine一起并发运行, goroutine 由 Go 程序运行时的调度和管理。 Go 程序从 main 包的 main() 函数开始,在程序启动时,Go 程序就会为 main() 函 阅读全文
posted @ 2019-07-02 12:36 VingB2by 阅读(373) 评论(0) 推荐(0) 编辑
摘要: Stringers: fmt包中定义的Stringer是最普遍的接口之一。 Stringer 是一个可以用字符串描述自己的类型。fmt 包(还有很多包)都通过此接口来打印值。 运行结果: Arthur Dent (42 years) Zaphod Beeblebrox (9001 years) 通过 阅读全文
posted @ 2019-07-02 12:33 VingB2by 阅读(486) 评论(0) 推荐(0) 编辑
摘要: 类型断言: 类型断言提供了访问接口值底层具体值的方式。 变量名 := 接口名.(判断类型名) 当只有一个返回值时,返回值为对应类型的值,而判断类型名与接口值类型不对应时,程序会宕机panic 此时我们需要第二种方式: 变量名,是否为判断类型名结果 := 接口名.(判断类型名) 当有两个返回值时,第一 阅读全文
posted @ 2019-07-02 12:31 VingB2by 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 接口是双方约定的一种合作协议。接口实现者不需要关心接口会被怎样使用,调用者也不需要关心接口的实现细节。 接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式、类型及结构。 声明: 接口类型是由一组方法签名定义的集合 type 接口类型名 interface{ 方法名1( 参数列表1 ) 返回值列 阅读全文
posted @ 2019-07-02 12:30 VingB2by 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 延迟执行defer: 当某些语句需要函数结束时才使用时,可以使用defer语句 最常用的就是在打开os.Open后加入Close()时用defer避免程序结束未关闭文件 defer 语句 运行结果: test 0 1 2 2 1 0 defer 语句会将函数推迟到外层函数返回之后执行。 推迟调用的函 阅读全文
posted @ 2019-07-02 00:12 VingB2by 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 类型别名与类型定义: type 类型别名 = 类型名 TypeAlias 只是 int 的别名,本质上 TypeAlias 与 int 是同一个类型 type 新类型名 类型 NewInt 则是一个新的类型,虽然他的实例化可以被赋值int,但是不再是int 方法: Go 没有类。不过你可以为结构体类 阅读全文
posted @ 2019-07-02 00:10 VingB2by 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 匿名函数: 匿名函数类似于函数声明,但是没有函数名 func (函数参数列表) (函数返回值列表){ 函数内部代码 } 在函数声明后可以加入参数直接调用 运行结果 24 114 闭包: 闭包是由函数及其相关引用环境组合而成的实体(即:闭包=函数+引用环境) 简单的看就是匿名函数作为返回值 拿个网上的 阅读全文
posted @ 2019-07-02 00:08 VingB2by 阅读(166) 评论(0) 推荐(0) 编辑