go语言学习-简介

2020-07-09 00:00:00 函数 语言 变量 标识符 不需要

近在学go语言,共勉。

程序员的晋级之路就是不断学习

  • go语言的编译器速度非常快。
    • go语言简化了解决依赖的算法-->只关注被引用的库
  • go语言内置并发机制,不用被迫使用特定的线程库,能使用更多的资源。
  • go语言自带垃圾回收器,不需要用户自己管理内存。
  • goroutine很像线程,但占用的内存远少于线程
  • channel是一种内置的数据结构
    • 可以让用户在不同的goroutine之间同步发送具有类型的消息
    • go语言倾向于在goroutine之间发送消息,而不是让多个goroutine争夺同一个数据的使用权。
    • goroutine并行执行函数,同时与主程序(main函数)并行执行
    • net/http库直接使用了内置的goroutine
  • 在go语言里,标识符(变量或函数)要么从包里公开,要么不公开
    • 当导入一个包时,程序可以直接访问这个包中任意一个公开的标识符(以大写字母开头)
    • 以小写字母开头的标识符是不公开的,只能在当前包内被访问
  • map是go语言里的一个引用类型,需要使用make来构造(初始化)
    • 如果map没有被构造并赋初值,使用时会报错,因为map变量默认值为nil
  • 如果申明的变量需要初始化为默认值,则使用var关键字申明,如果能提供确切的非默认值初始化变量或直接使用函数返回值创建变量,应该使用简化变量申明运算符。
  • 关键字range可以遍历数组、字符串、切片、映射和通道
    • 使用for range遍历切片(slice)时,每次遍历会返回两个值,个值是元素在切片中的索引位置,第二个值是元素值的一个副本
  • 下划线标识符的作用是占位符,可以忽略不需要的函数返回值。
  • 一个goroutine是一个独立其他函数运行的函数。
  • 使用指针变量可以让函数访问并修改一个变量的状态,而这个变量可以在其他函数甚至其他goroutine的作用域中申明。
  • JSON包提供编解码JSON的功能,OS包提供访问操作系统的功能(如读写文件)
    • 导入JSON包需要指定encoding的路径。
  • go编译器可以根据赋值运算符右边的值来推导类型,所以申明常量的时候不需要指定类型。
  • 关键字defer会安排随后的函数调用在函数返回时才执行,可以保证调用一定会被执行。
    • 类似Java中的finally

相关文章