1.4 Go微服务实战(Go语言基础) --- 函数方法接口和反射
Posted enlyhua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.4 Go微服务实战(Go语言基础) --- 函数方法接口和反射相关的知识,希望对你有一定的参考价值。
第4章 函数、方法、接口和反射
4.1 函数
4.1.1 函数的定义
4.1.2 闭包
Go语言中的闭包就是引用了自由变量的函数,被引用的自由变量同函数一直存在,即时离开了自由变量的环境也不会被释放和删除。闭包中可以
继续使用这个变量。
函数+引用环境=闭包
统一函数与不同引用环境的组合,可以形成不同的实例。
闭包会把函数和所访问的变量组合在一起,不再关心这个变量原来的作用域,闭包本身可以看做是独立对象。闭包函数与普通函数最大的区别
在于参数不是值传递,而是引用传递,所以闭包可以操作自己函数以外的变量。
4.1.3 作用域
4.1.4 多返回值及变长参数
Go语言中,函数的参数只能进行值传递,不能引用传递。虽然可以使用指针,但是本质上传递的还是指针指向的地址,因为访问的是地址内的值,
所以会被误认为是引用传递。比如,切片会让人觉得函数在处理切片时使用的是引用传递,其实是因为切片里包含地址,所以可以直接访问。此外,
切片包含的长度和容量也是通过值传递传到函数内的,如果在函数内修改了长度和容量,函数外的切片是接收不到的,所以需要返回一个切片,也是
基于这个原因,append函数才会每次返回切片。
4.1.5 defer关键字
4.2 方法
4.3 接口
接口的值是如何存储的?接口的类型包括两个部分,即一个具体类型和该类型的一个值,分别称为动态类型和动态值。为什么称为动态类型和动态值呢?
这是因为Go语言作为一种静态语言,经过编译后就没有严格意义上的类型值了,所以需要通过类型描述来描述类型的具体信息,以提供给编译器使用。
接口类型的值(简称接口值)包括动态类型和动态值,也就是说在编译阶段并不知道具体的类型和值,而是在程序执行到此时再通过动态类型和动态值去
调用具体的方法。
4.4 反射
以上是关于1.4 Go微服务实战(Go语言基础) --- 函数方法接口和反射的主要内容,如果未能解决你的问题,请参考以下文章
2.9 Go微服务实战(Go语言基础) --- Go Web编程
1.2 Go微服务实战(Go语言基础) --- 基本数据类型