Go语言高级编程-第1章 语言基础1 Go语言高级编程系列是我读《Go语言高级编程》时的一些要点总结。 1.1 Go语言创世纪 本章首先简要介绍Go语言的发展历史,并较详细地分析了“Hello World”程序在各个祖先语言中演化过程。然后,对以数组、字符串和切片为代表的基础结构,对以函数、方法和接口所体现的面向过程和鸭子对象的编程,以及Go语言特有的并发编程模型和错误处理哲学做了简单介绍。 Go语言很多时候被描述为“类C语言” 2021-12-04 golang #读书
Go语言高级编程-第0章 简介1 Go语言高级编程系列是我读《Go语言高级编程》时的一些要点总结。 整个文件夹是我读《Go语言高级编程的整理》 补充:前文中关于CGO的一下段介绍 GO特性实现了Go语言对C语言和C++语言的支持,使得Go语言可以无缝继承C/C++世界数十年来积累的巨大软件资产。Go汇编语言更是提供了直接访问底层机器指令的方法,让我们可以无限压榨程序中热点代码的性能。 2021-12-04 golang #读书
Go语言高级编程-第2章 CGO Go语言高级编程系列是我读《Go语言高级编程》时的一些要点总结。 C语言作为一个 通用语言,很多库会选择提供一个C兼容的API,然后用其他 不同的编程语言实现。Go语言通过自带的一个叫CGO的工具来支持C语言函数调用,同时我们可以用Go语言导出C动态库 接口给其它语言使用。本章主要讨论CGO编程中涉及的一些问 题。 一个简单的CGO程序 12345package mainimport &q 2021-12-04 golang #读书
Go语言高级编程-第1章 语言基础2 Go语言高级编程系列是我读《Go语言高级编程》时的一些要点总结。 1.7 错误和异常 在C语言中,默认采用一个整数类型的 errno 来表达错误,这样就可以根据需要定义多种错误类型。在Go 语言中, syscall.Errno 就是对应C语言中 errno 类型的错误。在 syscall 包中的接口,如果有返回错误的话,底层也 是 syscall.Errno 错误类型。 比如我们通过 sys 2021-12-04 golang #读书
Go语言高级编程-第6章 分布式系统 Go语言高级编程系列是我读《Go语言高级编程》时的一些要点总结。 有时我们需要能够生成类似 MySQL 自增 ID 这样不断增大, 同时又不会重复的 id。以支持业务中的高并发场景。比较典型 的,电商促销时,短时间内会有大量的订单涌入到系统,比如 每秒 10w+。明星出轨时,会有大量热情的粉丝发微博以表心 意,同样会在短时间内产生大量的消息。 在插入数据库之前,我们需要给这些消息/ 2021-12-04 golang #读书
Go语言高级编程-第3章 Go汇编语言 Go语言高级编程系列是我读《Go语言高级编程》时的一些要点总结。 Go汇编语言并不是一个独立的语言,因为Go汇编程序无法独 立使用。Go汇编代码必须以Go包的方式组织,同时包中至少 要有一个Go语言文件用于指明当前包名等基本包信息。如果 Go汇编代码中定义的变量和函数要被其它Go语言代码引用, 还需要通过Go语言代码将汇编中定义的符号声明出来。用于 变量的定义和函数的定义Go汇编文件类似于C 2021-12-04 golang #读书 #TODO
Go语言高级编程-第99章 附录 Go语言高级编程系列是我读《Go语言高级编程》时的一些要点总结。 当参数的可变参数是空接口类型时,传人空接口的切片时需要注意参数展开的问题。 12345func main() {var a=[]interface{}{1, 2, 3} fmt.Println(a) fmt.Println(a...)} 不管是 2021-12-04 golang #读书
Go语言高级编程-第4章 RPC和Protobuf Go语言高级编程系列是我读《Go语言高级编程》时的一些要点总结。 RPC是远程过程调用的缩写(Remote Procedure Call),通俗 地说就是调用远处的一个函数 因为 RPC涉及的函数可能非常之远,远到它们之间说着完全不同的 语言,语言就成了两边的沟通障碍。而Protobuf因为支持多种 不同的语言(甚至不支持的语言也可以扩展支持),其本身特性也非常方便描述服务的接口(也就是方 2021-12-04 golang #读书
Go语言高级编程-第5章go和web Go语言高级编程系列是我读《Go语言高级编程》时的一些要点总结。 因为Go的 net/http 包提供了基础的路由函数组合与丰富的功 能函数。所以在社区里流行一种用Go编写api不需要框架的观点;在我们看来,如果你的项目的路由在个位数、URI 固定且 不通过 URI 来传递参数,那么确实使用官方库也就足够。 只要你的路由带有参数,并且 这个项目的 api 数目超过了 10,就尽量 2021-12-04 golang #读书
文件读写方法整理 读文件12345678910111213141516configFile, err := os.Open(f)if err != nil {return err}fi, _ := configFile.Stat()if fi.Size() == 0 {return fmt.Errorf("config file (%s) is empty", f. 2021-10-05 golang #原创