Golang笔记

Golang笔记

3月 20, 2022 阅读 1556 字数 557 评论 0 喜欢 0

入门教程:go指南


go的优点(为什么用go做分布式)

  • 对线程的良好支持
  • 线程之间的锁和同步
  • 有一个方便的RPC包
  • 类型安全以及内存安全
  • 垃圾回收型语言

go的代码特点

大写字母开头为公有,小写字母开头为私有。

go的声明类型在变量之后的原因:易于阅读,当函数名太复杂的情况下不易混淆。

go的闭包

go的锁

go的锁与任何变量都没有关系,只与锁的变量本身有关,表示接下来的代码是互斥的,线程要执行就要先争夺锁变量。

defer

在Go语言中,可以使用关键字defer向函数注册退出调用,即主函数退出时,defer后的函数才被调用。defer语句的作用是不管程序是否出现异常,均在函数退出时自动执行相关代码。defer是在return调用之后才执行的。

  • 当defer被声明时,其参数就会被实时解析(参数是函数就执行参数函数)
func a() {
    i := 0
    defer fmt.Println(i) //输出0,因为i此时就是0
    i++
    defer fmt.Println(i) //输出1,因为i此时就是1
    return
}
  • defer执行顺序为先进后出(上图输出10)
  • defer可以读取有名的返回值例子

go race数据竞争检测

race detector:在编译流程中内置到你程序的代码。一旦你的程序开始运行,它能够发现和报告任何他所检测到的竞态情况。(解决:使用互斥锁)

发表评论

您的电子邮箱地址不会被公开。