开放的编程资料库

当前位置:我爱分享网 > Go教程 > 正文

Go变量

Go变量教程展示了如何在Golang中使用变量。

$ go version
go version go1.18.1 linux/amd64

我们使用Go版本1.18。

Go中的变量

变量用于存储值。它们是赋予值的标签。使用var关键字来声明变量列表。我们还可以使用:=简写语法来声明变量。

变量可以保存不同数据类型的值。数据类型是一组值和对这些值的允许操作。在许多情况下,Go可以从赋值的右侧推断出数据类型。

变量存储的值会随时间变化。另一方面,常量一旦定义就不会改变它们的值。

去声明变量

变量的类型跟在变量名后面。

package main

import "fmt"

func main() {

    var i int = 1
    var w float64 = 12.5

    fmt.Println(i, w)
}

在代码示例中,我们声明并初始化了两个变量。稍后,我们打印它们。

$ go run declaring.go 
1 12.5

去声明多个变量

使用var关键字,我们可以一次声明多个变量。

package main

import (
    "fmt"
)

func main() {

    var i, j, k = 1, 2, 3

    var (
        name       = "John Doe"
        occupation = "gardener"
    )

    fmt.Println(i, j, k)
    fmt.Printf("%s is a %s\n", name, occupation)
}

该示例显示了如何使用var声明多个变量。

$ go run var_init.go 
1 2 3
John Doe is a gardener

Go类型推断

Go可以从赋值的右边推断出数据类型。

package main

import (
    "fmt"
    "reflect"
)

func main() {

    var name = "John Doe"
    var age = 34

    fmt.Println(reflect.TypeOf(name))
    fmt.Println(reflect.TypeOf(age))

    fmt.Printf("%s is %d years old\n", name, age)
}

在代码示例中,我们定义了两个变量,但没有指定它们的数据类型。推断数据类型。

var name = "John Doe"
var age = 34

为了使推理起作用,变量必须被初始化

fmt.Println(reflect.TypeOf(name))
fmt.Println(reflect.TypeOf(age))

借助reflect包中的TypeOf函数,我们打印两个变量的数据类型。

$ go run inference.go 
string
int
John Doe is 34 years old

Go速记变量声明

在函数内部,:=短赋值语句可以用来代替带有隐式类型的var声明。

package main

import "fmt"

func main() {

    name := "John Doe"
    age := 34

    fmt.Printf("%s is %d years old\n", name, age)
}

该示例使用简写符号声明了两个变量。

Go速记多变量声明

我们也可以使用简写符号定义多个变量。

package main

import "fmt"

func main() {

    name, age := "John Doe", 34

    fmt.Printf("%s is %d years old\n", name, age)
}

程序在一行中用简写符号声明了两个变量。

Go变量默认值

没有显式初始值声明的变量被赋予它们的零值:

  • 0-数字类型
  • false-布尔类型
  • “”-字符串类型
package main

import "fmt"

func main() {

    var age int
    var isPresent bool
    var name string
    var weight float64

    fmt.Println(age, isPresent, name, weight)
}

代码示例中的四个变量被赋予了它们的默认值。

Go变量作用域

变量的范围是可以引用变量的代码区域。

package main

import "fmt"

var word string = "falcon"

func main() {

    i := 12

    fmt.Println(word)
    fmt.Println(i)

    test()
}

func test() {

    fmt.Println(word)
}

在代码示例中,我们定义了两个变量。

var word string = "falcon"

word变量是在全局范围内定义的。它在maintest函数中都可见。

func main() {

    i := 12
...

i变量有局部作用域。它仅在main函数内可见。

持续不断

与变量不同,常量不能随时间改变它们的值。它们是用const关键字定义的。常量按照惯例以大写字母书写。

package main

import "fmt"

func main() {

    var age int = 34
    const WIDTH = 100

    age = 35
    age = 36

    // WIDTH = 101

    fmt.Println(age, WIDTH)
}

在代码示例中,我们使用age变量和WIDTH常量。

在本教程中,我们介绍了Golang中的变量。

列出所有Go教程。

未经允许不得转载:我爱分享网 » Go变量

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏