golang 设计模式之singleton使用总结
golang
1.5版本之后默认设置GOMAXPROCS
值为当前计算机真实核心数,使得goroutines
从默认的单线程内并发执行
变成了默认的(真实核心数支持的)的多线程内并行
执行。多线程并行执行goroutines
需要考虑并行执行过程中引入的线程安全问题
。
golang
1.5版本之后默认设置GOMAXPROCS
值为当前计算机真实核心数,使得goroutines
从默认的单线程内并发执行
变成了默认的(真实核心数支持的)的多线程内并行
执行。多线程并行执行goroutines
需要考虑并行执行过程中引入的线程安全问题
。
golang
在1.5版本之前默认只使用一个核心来跑所有的goroutines
,即GOMAXPROCS
默认设置为1, ,即是串行执行goroutines
,在1.5版本后,GOMAXPROCS
默认设置为当前计算机真实的核心线程数,即是在并行执行goroutines
。
go能处理高并发的根本原因在于执行go协程只需极少的栈内存(大概4~5KB),并且能根据需要动态增长和缩减占用的资源。
反射是一种检查存储在接口变量中的<值,类型>
对的机制,借助go反射包提供的reflect.TypeOf
和reflect.ValueOf
可以方便的访问到一个接口值的reflect.Type
和reflect.Value
部分,从而可进一步得到这个接口的结构类型和对其进行值的修改操作。
接口被定义为一组方法的集合, 接口可以接收任何其实现的方法的值.
从技术上来将,Go
并不是一门面向对象的编程语言,所以与充许将类型和方法以面向对象的方式编程有些差别,最大的差异在于Go
不支持类型继承,但是提供一个接口
的概念. 在本章中,我们主要来讨论在Go
编程中使用方法和接口.
Go
语言中主要有三种控制流程if
,for
循环,switch case
语句。
Go
集合类型包含Array
,Slice
,Range
,Map
等议题的分析和讨论。
Go
内置类型实战,包括类型转换,类型断言,结构类型,结构继承等内容。