摘要:
协程 (goroutine) 与通道 (channel) Go 语言为构建并发程序的基本代码块是协程 (goroutine) 与通道 (channel)。他们需要语言,编译器,和 runtime 的支持。Go 语言提供的垃圾回收器对并发编程至关重要。 不要通过共享内存来通信,而通过通信来共享内存。 阅读全文
摘要:
读写数据 除了 fmt 和 os 包,我们还需要用到 bufio 包来处理缓冲的输入和输出。 键盘输入 // 从控制台读取输入: package main import "fmt" var ( firstName, lastName, s string i int f float32 input = 阅读全文
摘要:
接口 (interface)与反射 (reflection) 接口是什么 接口提供了一种方式来 说明 对象的行为:如果谁能搞定这件事,它就可以用在这儿 接口是Go 的动态语言的部分,Go+断言可以很灵活。 只包括方法 接口定义了一组方法(方法集),但是这些方法不包含(实现)代码:它们没有被实现(它们 阅读全文
摘要:
结构 (struct) 与方法 (method) 一个带属性的结构体试图表示一个现实世界中的实体 一个带属性的结构体试图表示一个现实世界中的实体 结构体也是值类型,因此可以通过 new 函数来创建 组成结构体类型的那些数据称为 字段 (fields)。字段=类型+名字 ADT 抽象数据类型 结构体的 阅读全文
摘要:
标准库概述 标准库的完整列表通过https://gowalker.org/search?q=gorepos查看 unsafe: 包含了一些打破 Go 语言“类型安全”的命令,一般的程序中不会被使用,可用在 C/C++ 程序的调用中 syscall-os-os/exec os: 提供给我们一个平台无关 阅读全文
摘要:
Map 一种元素对 (pair) 的无序集合,给定 key,对应的 value 可以迅速定位,这个结构也称为关联数组或字典(如需要有序请使用结构体) 给定 key,对应的 value 可以迅速定位 声明、初始化和 make 声明 var map1 map[keytype]valuetype var 阅读全文
摘要:
数组与切片 这章我们开始剖析 集合,它是可以包含大量条目 (item) 的数据结构,例如数组、切片和 map。从这看到 Go 明显受到 Python 的影响。 数组有特定的用处,但是却有一些呆板,所以在 Go 语言的代码里并不是特别常见。 相对的,切片确实随处可见的。它们构建在数组之上并且提供更强大 阅读全文
摘要:
概览 Go 是编译型语言,所以函数编写的顺序是无关紧要的;鉴于可读性的需求,最好把 main() 函数写在文件的前面,其他函数按照一定逻辑顺序进行编写(例如函数被调用的顺序) JS 是解释型语言,因此要注意先定义 function 再调用 DRY 事实上,好的程序是非常注意 DRY 原则的,即不要重 阅读全文
摘要:
if-else Go 的 if 不用写括号 if condition1 { // do something } else if condition2 { // do something else } else { // catch-all or default } if 与{要在同一行,} else 阅读全文
摘要:
文件名、关键字与标识符 文件名 不支持大小驼峰,请使用 小写字母+下划线 文件名均由小写字母组成,如 scanner.go 。如果文件名由多个部分组成,则使用下划线 _ 对它们进行分隔,如 scanner_test.go 。文件名不包含空格或其他特殊字符。 源文件大小 一个源文件可以包含任意多行的代 阅读全文
摘要:
Go 调试 在合适的位置使用打印语句输出相关变量的值(print/println 和 fmt.Print/fmt.Println/fmt.Printf 在 fmt.Printf 中使用下面的说明符来打印有关变量的相关信息: 1.在合适的位置使用打印语句输出相关变量的值(print/println 和 阅读全文
摘要:
平台与架构 编译器支持的环境 Linux FreeBSD Mac OS X(也称为 Darwin) 编译器版本 有 2 个版本的编译器:Go 原生编译器 gc 和非原生编译器 gccgo,其中,gc 版本的编译器已经被移植到 Windows 平台上,并集成在主要发行版中,你也可以通过安装 MinGW 阅读全文
摘要:
起源与发展 2010 年 5 月:谷歌投入使用 官网的首页有一个功能叫做 Go Playground,是一个 Go 代码的简单编辑器的沙盒,它可以在没有安装 Go 语言的情况下在你的浏览器中编译并运行 Go 语言的主要特性与发展的环境和影响因素 执行速度快但是编译速度并不理想的语言:C++ 编译速度 阅读全文