Go 那些不可不学的知识点

举报
宇宙之一粟 发表于 2022/02/27 23:37:42 2022/02/27
【摘要】 Go的简介编程哲学 Go语言具备哪些功能自动垃圾回收一个包系统函数词法作用域系统调用接口只读的UTF8字符串 Go语言没有的没有隐式的数值转换没有构造函数和析构函数没有运算符重载没有默认参数没有继承没有泛型没有异常没有宏没有函数修饰更没有线程局部存储 必学知识一、Go的并发基于CSP的并发特性;动态栈使得轻量级线程goroutine的初始栈很小,因此,创建一个goroutine的代价很小,...

Go的简介编程哲学

GO

Go语言具备哪些功能

  • 自动垃圾回收
  • 一个包系统
  • 函数
  • 词法作用域
  • 系统调用接口
  • 只读的UTF8字符串

Go语言没有的

  • 没有隐式的数值转换
  • 没有构造函数和析构函数
  • 没有运算符重载
  • 没有默认参数
  • 没有继承
  • 没有泛型
  • 没有异常
  • 没有宏
  • 没有函数修饰
  • 更没有线程局部存储

golang-768x446.jpeg

必学知识一、Go的并发

基于CSP的并发特性;动态栈使得轻量级线程goroutine的初始栈很小,因此,创建一个goroutine的代价很小,创建百万级的gorountine完全是可行的。

必学知识二、Go的基本内容

与主流命令式编程语言相似,方法、接口、并发、包、测试和反射等特性是Go特有的

  • 基本元素结构

    • 变量
    • 新类型定义
    • 包和文件
    • 作用域
    • 数字
    • 布尔值
    • 字符串
    • 常量
    • 如何显示和处理Unicode字符
  • 复合类型

    • 数组、字典、切片到动态列表
  • 函数

    • 错误处理、panic和recover、defer语句

    mechanic-tire.jpg

必学知识三、方法

  • Go语言的面向对象机制与一般语言不同,没有类层次结构,甚至可以说没有类;
  • 仅仅通过组合(而不是继承)简单的对象来构建复杂的对象。方法不仅可以定义在结构体上,而且,可以定义在任何用户自定义的类型上;并且,具体类型和抽象类型(接口)之间的关系是隐式的,所以很多类型的设计者可能并不知道该类型到底实现了哪些接口

必学知识四、接口

  • 基于顺序通信进程(CSP)概念的并发编程

    使用goroutines和channnels处理并发编程

  • 传统的基于共享变量的并发编程

必学知识五、包机制和包的组织结构

如何有效地利用Go自带的工具,使用单个命令完成编译,测试,基准测试,代码格式化,文档以及其他诸多任务。

必学知识六、单元测试

Go语言的工具和标准库中集成了轻量级的测试功能,避免了强大但复杂的测试框架。测试库提供了一些基本构件,必要时可以用来构建复杂的测试构件。

必学知识七、反射

一种程序在运行期间审视自己的能力。反射是一个强大的编程工具,不过要谨慎地使用;

利用反射机制实现一些重要的Go语言库函数,展示了反射的强大用法。

必学知识八、底层编程的细节

在必要时,可以使用unsafe包绕过Go语言安全的类型系统

gogo.png

笔记借鉴于:Go语言圣经中文版,感谢各位译者的开源精神!
同时也放出Go语言圣经原版地址,Go语言创始人所著,值得推荐!
欢迎大家一起学习、一起进步。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。