20180830-go变量定义

20180830-go变量定义

  • 20180830-go变量定义
  • preface:
  • Keyword : Variables
    • what
      • 粗略有哪几种变量声明方式?
      • 变量的命名规则?
      • 变量初始化?
      • 自动判断类型与其他语言的不同之处?
    • why
      • 为什么Go在声明变量时将变量的类型放在变量的名称之后?
    • how
    • when&where
      • 各种声明方式各自的适用场景?
    • who
    • refs:
    • expansion
    • inspire
      • 严格的限制:
      • Vs Python 包管理:


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
      )

变量的命名规则?

变量的命名规则遵循骆驼命名法,即首个单词小写,每个新单词的首字母大写,例如:numShipsstartDate

但如果你的全局变量希望能够被外部包所使用,则需要将首个单词的首字母也大写

有约定的话,在代码的可读性会更好。毕竟代码是给人读的。

变量初始化?

当一个变量被声明之后,系统自动赋予它该类型的零值: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:

  • the-way-to-go_ZH_CN 4.4 变量

expansion

  • Go对于变量的内存分配跟Python中的有什么不同?
  • 什么时候时候变量全部大写?

inspire

严格的限制:

刚接触go语言,发现有一点很surprise,声明的变量或者import进来的包,你一定要使用,不然就会报错。

Vs Python 包管理:

goland 这个IDE,会自动删掉你的未使用的package,这跟Python有很大的不同,pycharm这个IDE最多就把未使用的包变成灰色。

你可能感兴趣的:(TechDiary)