Go 语言入门
1. 背景
- 部署简单Go 编译生成的是一个静态可执行文件,除了 glibc 外没有其他外部依赖
- 并发行好Goroutine 和 Channel 使得编写高并发的服务端软件十分容易。很多情况下,完全不需要考虑锁机制。Go 语言的并发不是以库的形式提供,而是语言层面加入了对并发的支持。
- 程序员友好与 C/C++ 相比,Go 不支持一些高级语法,代码更简明,同时拥有一些动态语言的特性
- 执行性能好执行效率高,虽不如 C/C++, 但比 Python 高很多,同时内存使用也很高效。
4. Go 语言基本概念与语法
- 文件名Go 的源文件以 .go 为后缀名存储在计算机中,这些文件名均由小写字母组成,如 scanner.go 。如果文件名由多个部分组成,则使用下划线 _ 对它们进行分隔,如 scanner_test.go
- 包包是结构化代码的一种方式:每个程序都由包(通常简称为 pkg)的概念组成,可以使用自身的包或者从其它包中导入内容。在源文件的第一行指明该文件属于哪一个包,如:package main,表示一个可独立执行的程序。
- 常量常量使用关键字 const 定义,用于存储不会改变的数据。常量的定义格式:const identifier [type] = value。
- 变量声明变量的一般形式是使用 var 关键字:var identifier type。
- 数据类型18个基本类型,bool、string、rune、byte、int、uint、int8、uint8、int16、uint16、int32、uint32、int64、uint64、float32、float64、complex64、complex128,7个复合类型:array、struct、function、interface、slice、map、channel
- 控制结构Go 提供 if-else 结构、switch 结构、select 结构、for (range) 结构
- 函数定义
|
|
5. 内置标准库
- fmtfmt 包实现了格式化的 I/O 函数,类似C语言中的 printf 和 scanf,但是更加简单。
- stringsstrings 包实现了用于操作字符串的简单函数,包括 strings 导出函数和 Reader, Replacer 两个结构体。
- timetime 包提供显示和计算时间用的函数。
- osos 包提供了不依赖平台的操作系统函数接口。错误处理设计为Go 风格,失败的调用会返回错误值而非错误码。通常错误值里包含更多信息。
- pathpath 实现了对斜杠分隔的路径进行操作的函数。
- ioio 包提供了对 I/O 原语的基本接口,这些接口抽象出了泛用的函数并附加了一些操作。因为这些接口是对底层实现完全不同的低水平操作的包装,除非得到其它方面的通知,客户端不应假设它们是并发安全的。
- loglog 包实现了简单的日志服务,log 包定义了 Logger 类型,该类型提供了一些格式化输出的方法。也提供了一个预定义的标准 Logger,可以通过辅助函数 Print[f|ln]、Fatal[f|ln] 和Panic[f|ln] 访问,比手工创建一个 Logger 对象更容易使用。Logger 会打印每条日志信息的日期、时间,默认输出到标准错误。Fatal 系列函数会在写入日志信息后调用os.Exit(1)。Panic 系列函数会在写入日志信息后调用 panic。