优点:
- 编译型,运行速度快,和 java 差不多。
- 编译型,运行环境方便,二进制码,可直接运行。
- 原生支持高并发,适应多核。
- 和 PHP 相比,语法设计更为简洁。
- 自动垃圾回收,相比于C#等更不易造成内存泄漏。
缺点
- 调试没有脚本语言方便
- 三方库的数量不及 java 、 python 、 javaScript 等
我们在学习一门语言时,究竟在选择什么? => 选择的是生态圈,重视标准库的作用。
罗列一下标准库:
- bufio => 带缓冲的 I/O 操作
- bytes => 字节操作
- container => 封装堆、队列、环形列表等容器
- crypto => 加密算法
- database => 数据库驱动
- debug => 调试工具
- encoding => 数据格式解析,如 JSON、 XML、 Base64
- flag => 命令行解析
- fmt => 格式化操作
- go => go语言的词法、语法、类型等
- html => HTML转义及模板系统
- image => 图片操作
- io => I/O 原始访问接口
- math => 数学库
- net => 网络库,支持 Socket、HTTP、邮件、RPC、SMTP等
- os => 操作系统平台不依赖平台操作?
- path => 处理不同操作系统的路径
- plugin => 插件系统,按需加载
- reflect => 语言反射支持?
- regexp => 正则表达式
- runtime => 运行时接口
- sort => 排序接口
- strings => 字符串处理
- time => 时间接口
- text => 文本模板
一些知识点
- 初学者的好消息: 只需要短短的一周时间,就可以从学习阶段转到开发阶段,并完成一个高并发的服务器开发。
- 简单的web服务器: 常规web服务器会使用 nginx、 apache 等,但是如 nodejs 一样,go 提供了底层的网络模块,可以直接使用
import "net/http"
的方式使用网络模块提供web服务。 - go 语言脱胎于 C 语言,有很多类似的东西,例如结构体,可以在此基础上拓展对 C 语言的认识。
- 一个go包有且仅能有一个main函数,这跟 C 语言中的main函数类似。
- 用 func 关键词申明函数。 格式为: func 函数名 (参数列表) (返回值列表) { 函数体 } (左 ‘{’ 必须在函数名行)
- Go的语句结尾可以使用分号结束,也可以不用,编译器会自动添加。 这点跟 js 是一样的。