(文章持续更新中...有志同道合的人能够一块儿探讨下。整个系列(1~8)准备重写,不过都是很基础的入门笔记,想学到很深刻的东西则不建议阅读...)数组
反射是指在程序运行期对程序自己进行访问和修改的能力,使用 reflect.TypeOf() 函数能够得到任意值的类型对象(reflect.Type)bash
const (
Invalid Kind = iota // 非法类型
Bool // 布尔型
Int // 有符号整型
Int8 // 有符号8位整型
Int16 // 有符号16位整型
Int32 // 有符号32位整型
Int64 // 有符号64位整型
Uint // 无符号整型
Uint8 // 无符号8位整型
Uint16 // 无符号16位整型
Uint32 // 无符号32位整型
Uint64 // 无符号64位整型
Uintptr // 指针
Float32 // 单精度浮点数
Float64 // 双精度浮点数
Complex64 // 64位复数类型
Complex128 // 128位复数类型
Array // 数组
Chan // 通道
Func // 函数
Interface // 接口
Map // 映射
Ptr // 指针
Slice // 切片
String // 字符串
Struct // 结构体
UnsafePointer // 底层指针
)
复制代码
Go 语言中的类型名称对应的反射获取方法是 reflect.Type 中的 Name() 方法,返回表示类型名称的字符串。函数
类型归属的种类(Kind)使用的是 reflect.Type 中的 Kind() 方法,返回 reflect.Kind 类型的常量工具
反射不只能够获取值的类型信息,还能够动态地获取或者设置变量的值。Go 语言中使用 reflect.Value 获取和设置变量的值性能
Go 语言中,使用 reflect.ValueOf() 函数得到值的反射值对象(reflect.Value)ui
value := reflect.ValueOf(rawValue)
复制代码
若是反射值对象(reflect.Value)中值的类型为函数时,能够经过 reflect.Value 调用该函数。使用反射调用函数时,须要将参数使用反射值对象的切片 []reflect.Value 构造后传入 Call() 方法中,调用完成时,函数的返回值经过 []reflect.Value 返回spa
+=================================================+指针
Go 语言中使用 go build 命令将源码编译为可执行文件code
go run 命令会编译源码,而且直接执行源码的 main() 函数,不会在当前目录留下可执行文件.,可执行文件被放在临时文件中被执行,工做目录被设置为当前目录对象
go install 的功能和 go build 相似,附加参数绝大多数均可以与 go build 通用。go install 只是将编译的中间文件放在 GOPATH 的 pkg 目录下,以及固定地将编译结果放在 GOPATH 的 bin 目录下
go get 能够借助代码管理工具经过远程拉取或更新代码包及其依赖包,并自动完成编译和安装
Go 语言工具链中的 go pprof 能够帮助开发者快速分析及定位各类性能问题,如 CPU 消耗、内存分配及阻塞分析