go reflect
go 反射机制
1. 反射机制
反射是一个复杂的内省技术。所谓内省即可以动态获取变量的类型,值,以及方法属性等元数据。需要反射的根本原因是,很多时候我们在编程时,并不能确定输入的具体类型,需要我们动态去判断。
go 反射机制
反射是一个复杂的内省技术。所谓内省即可以动态获取变量的类型,值,以及方法属性等元数据。需要反射的根本原因是,很多时候我们在编程时,并不能确定输入的具体类型,需要我们动态去判断。
Go 并发编程原语,Goroutines和Channels
上一篇我们讲解了 Go 语言中的接口,至此对于 Go 语言的类型系统我们基本上讲的差不都了。接下来我们将深入了解 Go 最为人推广的特性并发编程。对于那些完全独立的子问题,并发是简单的,但是真正复杂的是处理那些存在资源共享的多进程多线程并发问题。我们需要有效的通信机制来处理程序中的竞争条件,同时避免可能出现的死锁问题。
Go 的泛型编程
接口是 Go 语言提供的泛型的核心概念。所谓泛型就是允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,目的是增加函数的通用性。当然我们没必要去纠结概念,最重要的是搞明白,Go 如何通过接口来提高程序的灵活性。
Go 的对象组合技术
方法是面向对象编程(OOP)中的概念。有关 OOP 的定义我也说不清楚。但是与概念相比,更重要的是OOP的两个关键点:封装和组合。我们的目的是看看 Go 语言如何通过结构体嵌入等技术实现这两个关键点。
函数,代码封装的基本单元
函数通常使用起来并不复杂,定义或声明函数后,直接使用即可。但是为了函数更加易用,编程语言会为函数添加很多特性。在 Python 和 Go 中,函数都是一等"公民",即函数可以用在任何变量可以使用的地方,并且具有类型。因此接下来我们按照下面的顺序来讲解 Go 函数的相关内容:
Go 的类型系统
接着上一篇,我们来继续讨论 Go 里面的复合数据类型,包括数组、slice、map和结构体。数组和结构体是聚合类型;它们的值由许多元素或成员字段的值组成。slice,map 分别与 Python 中的 array.Array,dict 相对应,它们是 Go 提供给我们容器数据类型。