1.5 变量

一、先声明,再赋值

var 变量名 类型
变量名 =

二、声明并赋值

var 变量名 类型 =
// 可以简写成
var 变量名 =

备注:简写状态是由编译器判断变量名值的类型

三、声明并赋值的简洁写法

变量名 :=

注意:这种写法只现定于局部作用域,全局变量不可以使用

四、同时声明多个变量

var 变量1, 变量2 类型
var (
	变量1 类型1
    变量2 类型2
    ...  ...
)

备注:注意使用时,不同类型赋值会失败

五、一行声明并赋值多个变量

var 变量1, 变量2, ... = 值1, 值2, ...
变量1, 变量2, ... := 值1, 值2, ...

六、值拷贝

  1. 直接赋值

    var x = 10
    // 变量赋值时会发生值拷贝,开辟新的空间,后续修改,互不影响
    var y = x
    x = 20
    fmt.Println(x)
    fmt.Println(y)

    结果:20 , 10

    原因:变量赋值时会发生值拷贝,开辟新的空间,后续修改,互不影响

  2. 运算后赋值

    var a = 1 + 1
    fmt.Println(a)
    var b = x * y
    fmt.Println(b)

    结果:2, 200

    原理相同,区别在于,a的1+1在运算后,非结果会被垃圾回收机制回收,x和y是变量,不会被回收,可反复使用

注意:没有变量接收的值,运算结束后会被回收

七、匿名变量

因为Go语言中强制要求,已定义的变量必须被使用,因此如果出现未使用函数就会报错,可以通过匿名变量_解决

var a, b = 1, 2
fmt.Println(a, b)

// 使用下划线"_"进行匿名变量使用,解决定义的变量未使用会报错的问题
var c, _ = 3, 4
fmt.Println(c)

因为函数返回值,会出现部分返回值无用的情况,需要匿名变量进行处理

八、变量命名规范

  1. 规范:

    1. 变量名必须由数字、字母、下划线组成

    2. 标识符开头不能是数字

    3. 标识符不能是保留字或关键字

    4. 建议使用驼峰命名,当名字有多个单词时优先使用大小写分隔(小驼峰命名)

    5. 变量名尽量做到见名知意

    6. 变量命名区分大小写

  2. 25个关键字

    1. continue
      for
      import
      return
      var

      const

      fallthrough

      if

      range

      type

      chan

      else

      goto

      package

      swtich

      case

      defer

      go

      map

      struct

      break

      default

      func

      interface

      select

    2. 除上面25个外,新版GO语言中还有30多个预定义标识符,可分如下三类

      1. 常量相关预定义标识符:true、false、iota、nil

      2. 类型相关预定义标识符:int、int8、int16、int32、int64、uint、uint8、uint16、uint32、uint64、uintptr、float32、float64、complex128、complex64、bool、byte、rune、string、error

      3. 函数相关预定义标识符:make、len、cap、new、append、copy、close、delete、complex、real、image、panic、recover

九、语句分割符

  1. 以英文你的分号;或换行作为语句分割符

  2. 推荐使用换行作为语句分割符

分号一般用于同一行中出现多条语句,有多大的病在非默认规范外一行进行多个语句操作

Last updated