20180830-go变量定义
preface:
艰难入门golang ing….
Keyword : Variables
what
粗略有哪几种变量声明方式?
- var关键字声明
var a int
:=
a, b, c, s := 3, 4, true, "abc"
- 因式分解关键字
var (
a int
b bool
str string
)
变量的命名规则?
变量的命名规则遵循骆驼命名法,即首个单词小写,每个新单词的首字母大写,例如:numShips
和 startDate
。
但如果你的全局变量希望能够被外部包所使用,则需要将首个单词的首字母也大写
有约定的话,在代码的可读性会更好。毕竟代码是给人读的。
变量初始化?
当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil。
记住,所有的内存在 Go 中都是经过初始化的。
这跟python中有什么不同?
自动判断类型与其他语言的不同之处?
Go 编译器的智商已经高到可以根据变量的值来自动推断其类型,这有点像 Ruby 和 Python 这类动态语言,只不过它们是在运行时进行推断,而 Go 是在编译时就已经完成推断过程。
why
为什么Go在声明变量时将变量的类型放在变量的名称之后?
- 1.避免像 C 语言中那样含糊不清的声明形式
C语言: int* a, b;
只有 a 是指针而 b 不是
Go中: 可以轻松地将它们都声明为指针类型 var a, b *int
- 2.这种语法能够按照从左至右的顺序阅读,使得代码更加容易理解。
var a int
var b bool
var str string
有点像英语和中文的区别:如果写成
var int a
就像中文的 定语加名词 ,写成var a int
就像英文的语法,先突出中心,再后面用定语修饰
how
when&where
各种声明方式各自的适用场景?
因式分解关键字的写法一般用于声明全局变量。
目的都是为了更清晰的表达meanings
who
refs:
expansion
- Go对于变量的内存分配跟Python中的有什么不同?
- 什么时候时候变量全部大写?
inspire
严格的限制:
刚接触go语言,发现有一点很surprise,声明的变量或者import进来的包,你一定要使用,不然就会报错。
Vs Python 包管理:
goland 这个IDE,会自动删掉你的未使用的package,这跟Python有很大的不同,pycharm这个IDE最多就把未使用的包变成灰色。