Skip to content

20210105var与:=的使用规范原则(2)

ziyouzy edited this page Jan 5, 2021 · 1 revision

然后就和强制转换一样,开始设计“我自己约束我自己的”编码习惯(规则)

我这是约束函数体内部的编码习惯

当设计到强制类型转换,如简单数据类型:

var nameBytes =[]byte{0x01,0x02,0x03}//不涉及类型转换,则用var实例化一个变量
nameStr :=string(nameBytes)//涉及类型转换,则用:=实例化一个变量

这里先补充一篇文章的知识点:

https://blog.csdn.net/ilgfcyll/article/details/102294078

“函数的每一次运行,就产生了一个独立的变量空间,在这个中间中的变量,是函数的这次运行独有的,称之为本地变量。定义在函数内部的变量就是本地变量。参数也是本地变量。”

也就是说,只要是在函数/方法(这些没有field的语法块)内部的变量,都是“本地变量”(实例变量,属性,字段,域,field)

而定义在结构类field里的字段可以称其为“成员变量”(局部变量)

这篇文章其实也还行:

https://blog.csdn.net/qq_36084681/article/details/80577641

所以上面的例子,var nameBytes和nameStr都属于局部变量,同时这篇文章并不涉及到本地变量的任何知识内容

现在从新思考下规则:

1.涉及到通过强制转换从而实例化一个局部变量的情况,必须用:=,因为等号右边可以清晰的看到他具体是个什么类型
2.除此之外,局部变量会分为临时局部变量和非临时局部变量
3.非临时局部变量需要在函数的开头统一实例化,同时必须采用var的方式,不能用:=的方式
4.临时局部变量必须在使用他的前一句,也就是说,初始化和使用这两行代码必须紧靠在一起
5.临时局部变量必须使用var的形式
Clone this wiki locally