GO 基础,难点 - 详解

 var f string = "Runoob" 简写为 f := "Runoob"

变量 f 之前未被声明过,只能用在函数体内,不可用于全局变量的声明与赋值

Go函数可以返回多个值 : return 1,2

如果接口只包含一个方法,接口名字要以er结尾。例:type Matcher interface{}

同一个目录下的所有.go文件必须声明同一个包名

Import 编译器先在GO的安装目录找(标准库源),然后才在GOPATH变量目录找(个人工作空间);其中一个满足就停止继续查找。

方法

type user struct{

Email string

}

值接收者使用值的副本来调用方法

Func (u user) notify(){
}

指针接收者使用实际值来调用方法

Func (u *user) changeEmail(){
}

并发原子函数 , 互斥锁, 通道 保证对共享资源的安全访问。

原子函数: atomic.AddInt64(&a , 1) // 安全的对 a 加 1

互斥锁:同一时间只有一个goroutine 可以执行临界区代码块

Mutex.lock() // 加锁

{代码块}

Mutex.Unlock() // 释放锁

通道:在goroutine 之间架起管道,并提供了确保同步交换数据对机制。

Unbuffered := make(chan int) // 无缓冲整型通道

Buffered := make(chan string , 10) // 有缓冲字符串通道

并发模式:

Runner :控制程序的生命周期

Pool : 管理可复用的资源池

Work : 创建可以处理任务的goroutine池

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值