Featured image of post Go中变量的声明

Go中变量的声明

  1. 一般形式: var identifier type

    var name string

  2. 一次声明多个变量: var identifier1, identifier2 type var firstname lastname string

  3. 指定变量类型, 如果没有初始化,则变量默认为零值:

  var v_name v_type
  v_name = value
  var name string
  name = "honulu"

数值类型为0, 布尔类型为false,字符串为”“(空字符串),其他大部分为nil

  1. 分解值自行判断变量类型: var v_name = value
var name = "honulu"
  1. 省略var: v_name := value

    name := "honulu"

:=左侧没有声明新的变量,就产生编译错误

  1. 多变量声明:

    var vname1, vname2, vname3 type
    vname1, vname2, vname3 = v1, v2, v3
    
    //不需要声明类型,自动推断
    var vname1, vname2, vname3 = v1, v2, v3
    
    //出现在:=左侧的变量不应该是已经声明过的,不然出现编译失败
    vname1, vname2, vname3 := v1, v2, v3
    
  var age1, age2 int
  age1, age2 = 1, 2
  
  var age1 age2 = 1, 2
  
  name1, name2, name3 := "ho", "nu", "lu"
  1. 全局变量声明:

    var (
        vname1 v_type1
        vname2 v_type2
    )
    
  var (
      a int
      b bool
  )
  1. 不带声明格式的声明

只能在函数体里出现.

  func main() {
      name, age := "HONULU", 2
  }

声明了一个局部变量却没有在相同的代码块中使用它, 会得到编译错误, 单纯地赋值也是不够的, 这个值必须被使用.

全局变量是允许声明但不使用.

想要交换两个变量的值, 可以简单地使用a, b = b, a, 但是两个变量类型必须是相同的.

空白标识符_也可用于抛弃值, 如 _ , b = 5, 7中5被抛弃.

_ 实际上是一个只写变量, 你不能得到它的值. 这样做是因为 Go 语言中你必须使用所有被声明的变量, 但有时你并不需要使用从一个函数得到的所有返回值.

   package main
   
   import "fmt"
   
   func main() {
   _,numb,strs := numbers() //只获取函数返回值的后两个
   fmt.Println(numb,strs)
   }
   
   //一个可以返回多个值的函数
   func numbers()(int,int,string){
   a , b , c := 1 , 2 , "str"
   return a,b,c
   }

输出结果:

   2 str
Licensed under CC BY-NC-SA 4.0