老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

Go语言的变量是什么?老男孩IT培训

老男孩IT教育

技术博客

2020年12月2日 11:54

Go语言是静态类型语言,不能在运行期间改变变量类型。使用关键字 var 定义变量,自动初始化为零值。如果提供初始化值,可省略变量类型,由编译器自动推断。

  变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。

  Go语言是静态类型语言,不能在运行期间改变变量类型。使用关键字 var 定义变量,自动初始化为零值。如果提供初始化值,可省略变量类型,由编译器自动推断。

  Go语言中变量可以在三个地方声明:

  函数外定义的变量称为全局变量

  函数内定义的变量称为局部变量

  函数定义中的变量称为形式参数

  接下来让我们具体了解全局变量、局部变量和形式参数。

  全局变量

  在函数体外声明的变量称之为全局变量,全局变量可以在整个包甚至外部包(被导出后)使用。

  局部变量

  在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。

  形式参数

  形式参数会作为函数的局部变量来使用。

  变量声明

  第一种,指定变量类型,声明后若不赋值,使用默认值。

var name string

  第二种,根据值自行判定变量类型。

var age = 18

  第三种,变量声明并赋值

var class string = "Linux"

  第四种,一次性声明多个变量

var Mon, Tues, Wed, Thur, Fri, Sat, Sun int

var (
    Monday    int
    Tuesday   int
    Wednesday int
    Thursday  int
    Friday    int
    Saturday  int
    Sunday    int
)

  第五种,短声明变量

  在函数内部,可以使用更简略的 ":=" 方式定义变量。":=" 简洁赋值语句在明确类型的地方,可以用于替代 var 定义。

package main

func main() {
    name := "oldboy"
    age, class := 18, "Linux"
    _, _, _ = name, age, class
}

  注意:":=" 结构不能在函数外使用。

  第六种,形式参数

package main

func main() {
}

func sum(a, b int) (c int) {
    c = a + b
    return
}

  变量优先级

  Go语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑。实例如下:

package main

import "fmt"

// 声明全局变量
var variable string = "全局变量"

func main() {
    // 声明局部变量
    var variable string = "局部变量"
    fmt.Printf("结果:%s\n", variable)
}

  运行结果:

  结果:局部变量

  多变量赋值时,先计算所有相关值,然后再从左到右依次赋值。

package main

import "fmt"

func main() {
    data, i := [4]string{"course", "Python", "Linux", "Golang"}, 0
    i, data[i] = 2, "oldboy"
    fmt.Printf("i:%v,data:%v\n", i, data)
}

  输出结果:

i:2,data:[oldboy Python Linux Golang]

  老男孩教育专注Linux云计算运维工程师、Python全栈+人工智能、Python自动化运维开发、网络安全、数据分析、新媒体运营、MySQLDBA开发、K8S微服务、Go语言等互联网课程培训。欢迎对it行业感兴趣的朋友们来公司考察及学习。

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。