Go 变量

变量时程序的基本组成单位,无论是使用哪个编程语言来进行开发,变量都是其程序的基本组成单位.

  1. 变量表示内存中的一个存储区域,该区域有属于自己的名称(变量名 )和类型(变量类型)

Golang 变量有三种使用方式

  1. 指定变量类型,声明后若不赋值则使用默认值

    var num int // 0
    
  2. 根据值自行判断变量类型(类型推断)

    var num = 10 // int
    
  3. 声明变量时省略 var 关键字,需要使用 := 进行声明

    num := 10
    

变量名在相同作用域中不能重复声明,否则会导致编译错误

在 Go 语言中,同类型的变量支持同时声明

var one, two, three int
fmt.Println("one =", one, "two =", two, "three =", three)
# clover @ MacBook-Pro in ~/dev/go/learn/src/go_code/learn/variable [22:54:40] C:1
$ go run main.go
one = 0 two = 0 three = 0

不同类型的变量也是可以同时声明的,但是不推荐这么做

var age, name = 20, "clover"
fmt.Println("age =", age, "name =", name)
# clover @ MacBook-Pro in ~/dev/go/learn/src/go_code/learn/variable [22:57:21] C:1
$ go run main.go
age = 20 name = clover

如果需要同时定义不同类型的变量,那么推荐这样

var age int, name string

在 Go 语言中,任何在方法外部定义的变量都是全局变量,定义方式和以上方式是一样的。全局变量不被使用时不会导致编译错误

package main

import "fmt"

var author = "clover"

func main() {
	fmt.Println("author =", author)
}
# clover @ MacBook-Pro in ~/dev/go/learn/src/go_code/learn/variable [22:58:12] 
$ go run main.go
author = clover

还可以这样定义

package main

import "fmt"

var (
    author = "clover"
    age = 20
)

func main() {
	fmt.Println("author =", author, "age =", age)
}

注意

  1. 同一个作用域的数据值在同一类型中可以不断变化

    	var integer int = 10
    
    	integer = 20 // v
    	integer = 30 // v
    	integer = 1.1 // x
    
    	fmt.Println("integer =", integer)
    

    执行该代码后会得到一个错误,该错误表示无法将 1.1 赋值给 int 类型

    # clover @ MacBook-Pro in ~/dev/go/learn/src/go_code/learn/variable [23:17:44] 
    $ go run main.go
    # command-line-arguments
    ./main.go:26:12: cannot use 1.1 (untyped float constant) as int value in assignment (truncated)
    
  2. 变量在同一作用域中不能重复定义,

    例如以下代码,这是不允许的

    func main() {
        var num = 10
        fmt.Println("num =", num)
        var num = 11
        fmt.Println("num =", num)
    }
    

    在不同作用域中可以重复定义

    func main() {
    	var num = 10
    	fmt.Println("num =", num)
    	{
    		var num = 11
    		fmt.Println("num inner scope =", num)
    	}
    }
    

    通过 go run 命令去执行是可以通过编译的

    # clover @ MacBook-Pro in ~/dev/go/learn/src/go_code/learn/variable [23:17:52] C:1
    $ go run main.go
    num = 10
    num inner scope = 11
    
  3. 变量构成的三要素:变量名 + 数据值 + 数据类型

  4. Go 语言的变量如果没有初始值,那么编译器会使用默认值,例如:数值类型的变量,默认值就是为 0 ,而 string 类型的变量默认值为空字符串

posted @ 2023-06-13 09:59  CloverYou  阅读(23)  评论(0)    收藏  举报