学习笔记 - Go - 简介
Posted Jason575757
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记 - Go - 简介相关的知识,希望对你有一定的参考价值。
Go 特点: Go 语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。主要目标是“兼具 Python 等 动态语言的开发速度和 C/C++ 等 编译型语言的性能与安全性”( 快速编译,高效执行,易于开发)。 可访问 底层操作系统 ,提供了强大的 网络编程 和 并发编程 支持。 Go 与 C 的区别: 1. 去掉循环冗余括号。for (int i = 0 ; i < 10 ; i++) 变为 for i := 0 ; i < 10 ; i++。 2. 去掉表达式冗余括号。if (表达式) 变为 if 表达式。 3. 强制代码风格。左括号不能在单独的行上,无需分号换行。 4. 强制自增方式。只能写作 i++,其他情况视作编译错误。 Go 项目目录结构: - src:放置项目和库的源文件。 - pkg:放置编译后生成的包/库的归档文件。 - bin:放置编译后生成的可执行文件。 静态语言与动态语言区别:编译前确定 变量的 类型 | 类型匹配检查 | 优缺点 | 例子 | |
静态语言 | 使用变量前 需要声明 | 有 | IDE有较强的校验能力,对开发有保障; 第三方代码对代码侵害性低; | C、C++、C#、Go、 Java(先编译成.class再由JVM解释) |
动态语言 | 使用变量前 不需要声明 | 无,自带多态 | 代码简洁可读性高,某些场景下可读性低; | Python、Ruby、javascript |
特点 | 优缺点 | 例子 | |
编译型语言 | 解释器一句一句“翻译”成机器语言来一句一句执行 | 执行速度快,内存开销小,调试排错帮助小,文件大,安全性低,依赖平台,难实现 | C、C++、Go |
解释型语言 | 编译器来编译成机器语言,然后可直接运行这个编译成的“可执行文件” | 和上者相反 | Java、Python、JavaScript |
目录名 | 说明 |
api | 每个版本的 api 变更差异 |
bin | Go 源码包编译出的编译器(Go)、文档工具(godoc)、格式化工具(gofmt) |
doc | 英文版的 Go 文档 |
lib | 引用的一些库文件 |
misc | 杂项用途的文件,例如 Android 平台的编译、git 的提交钩子等 |
pkg | Windows 平台编译好的中间文件 |
src | 标准库的源码 |
test | 测试用例 |
Go语言 标准库包名 | 功 能 |
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 | Go 1.7 加入的插件系统。支持将代码编译为插件,按需加载 |
reflect | 语言反射支持。可以动态获得代码中的类型信息,获取和修改变量的值 |
regexp | 正则表达式封装 |
runtime | 运行时接口 |
sort | 排序接口 |
strings | 字符串转换、解析及实用函数 |
time | 时间接口 |
text | 文本模板及 Token 词法器 |
以上是关于学习笔记 - Go - 简介的主要内容,如果未能解决你的问题,请参考以下文章