美文网首页
2-2 Go --- 变量的初始化

2-2 Go --- 变量的初始化

作者: 捌千里路雲和月 | 来源:发表于2021-06-26 23:29 被阅读0次

变量的初始化:在定义变量的同时给变量赋值。相当变量的定义 和 变量赋值二合为一。初始化变量的几种方法:

一、完整的方法,变量定义和变量赋值分开写:
优点:结构清晰。

package main

import "fmt"

func main() {
    //  1、定义和赋值分开写
    var n1 int // 定义变量
    n1 = 100   // 变量赋值

    //  打印 n1 值
    fmt.Println("1、定义和赋值分开写 n1= ", n1)
}


//输出结果:
PS C:\Users\86186\go\src\chapter2\2.2> go run .\main.go
1、定义和赋值分开写 n1=  100

二、类型推导:根据值的类型自动推导出变量类型。
优点:定义变量不用写类型 并且 直接赋值,格式简化。

package main

import "fmt"

func main() {

    /*n2没有指定什么类型,右边的值200是 int类型。
    根据值的类型推导变量 n2定义为 int类型。*/
    var n2 = 200

    /*s1没有指定什么类型,右边的值"这是类型推导的例子"是 string类型。
    根据值的类型推导变量s1定义为 string类型。*/
    var s1 = "这是类型推导的例子"

    //  打印 n2 值
    fmt.Println("2、类型推导 n2= ", n2, ",s1= ", s1)
}

//输出结果:
PS C:\Users\86186\go\src\chapter2\2.2> go run .\main.go
2、类型推导 n2=  200 ,s1=  这是类型推导的例子

三、简短式:类型推导的升级版。把变量 var关键字也省去,但要用 := 进行赋值。
优点:格式更加简化。

package main

import "fmt"

func main() {
    // 简短式不用写变量 var关键字,但要用英文符号 := 赋值。
    n3 := 300

    //  打印 n3 值
    fmt.Println("3、简短式 n3=", n3)
}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.2> go run .\main.go
3、简短式 n3= 300

以上是单个变量的初始化,下面是批量初始化变量。

四、完整方法的批量变量初始化。
缺点:仅支持同类型变量。

package main

import "fmt"

func main() {
    //完整方法的批量变量初始化
    var n4, n5, n6 int = 400, 500, 600 // 定义多个变量 并 赋值

    //  打印 n4,n5,n6 值
    fmt.Println("n4=", n4, ",n5=", n5, ",n6=", n6)
}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.2> go run .\main.go
n4= 400 ,n5= 500 ,n6= 600

五、稍作改变,var()括号内范围可以批量初始化多种类型的变量。既可以批量初始化多个变量,也支持多个类型。多变量和多数值之间用,逗号隔开。

package main

import "fmt"

func main() {
    //var()括号内范围可以批量初始化多种类型的变量。
    var (
        n7, n8 int    = 700, 800 // 定义多个变量 并 赋值
        s1     string = "s1是字符串"
    )

    //  打印 n7,n8,s1 值
    fmt.Println("n7=", n7, ",n8=", n8, ",s1=", s1)
}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.2> go run .\main.go
n7= 700 ,n8= 800 ,s1= s1是字符串

六、类型推导批量初始化多种类型的变量。
优点:定义多个变量不用一个一个写类型, go 根据值的类型自动推导出变量类型。并且可以 直接赋值,格式简化。(注意:左边变量数目和右边数值的数目要一致)

package main

import "fmt"

func main() {
    //左边 var跟变量名,右边是对应变量的值。
    var n9, n10, s2 = 900, 1000, "s2是字符串"// 定义多个变量 并 赋值

    //  打印 n9,n10,s2 值
    fmt.Println("n9=", n9, ",n10=", n10, ",s2=", s2)
}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.2> go run .\main.go
n9= 900 ,n10= 1000 ,s2= s2是字符串

七、简短式批量初始化多种类型的变量,类型推导的升级版。var 关键字也不用写,变量 := 值 就可以完成初始化,更加简约。

package main

import "fmt"

func main() {
    //简短式批量初始化多种类型的变量,不用写 var关键字,赋值用 :=
    n11, n12, s3 := 1100, 1200, "s3也是字符串" // 定义多个变量 并 赋值

    //  打印 n9,n10,s2 值
    fmt.Println("n11=", n11, ",n12=", n12, ",s3=", s3)
}
PS C:\Users\86186\go\src\chapter2\2.2> go run .\main.go
n11= 1100 ,n12= 1200 ,s3= s3也是字符串

tips:
1、简短式的变量赋值,无论是单个变量初始化还是批量初始化。只支持函数体内部,不支持函数体外部。因为这种形式并没有 var 作为创建变量的关键字。函数体外用简短式会报 expected declaration 等待声明变量的错误。



完整式和类型推导有 var 关键字开头定义变量的,可以在函数体外定义变量、赋值。

package main

import "fmt"

// 函数体外用类型推导方式进行变量的批量初始化
var n11, n12, s3 = 1100, 1200, "函数体外初始化"

func main() {

    //  打印 n9,n10,s2 值
    fmt.Println("n11=", n11, ",n12=", n12, ",s3=", s3)
}

//输出结果:
PS C:\Users\86186\go\src\chapter2\2.2> go run .\main.go
n11= 1100 ,n12= 1200 ,s3= 函数体外初始化

2、整个过程下来应该很多情况下都会选择简约方便的简短式变量赋值或初始化。从最完整的格式开始过度到简短式可以了解其中的变化和要点。对于不同场景和不同人的理解都是一个支撑点,找到对自己最容易理解内容的学习方式最重要。

相关文章

  • 2-2 Go --- 变量的初始化

    变量的初始化:在定义变量的同时给变量赋值。相当变量的定义 和 变量赋值二合为一。初始化变量的几种方法: 一、完整的...

  • 第03天(复合类型)_结构体的基本使用

    29_结构体普通变量初始化 30_结构体指针变量初始化.go 31_结构体成员的使用:普通变量.go 32_结构体...

  • Go 基础

    go 介绍 编程 变量赋值初始化 Println 与 Printf 的区别 匿名变量,Go函数可以返回多个值 常量...

  • 【Golang 基础】Go 语言的变量与常量

    Go 语言的变量与常量 变量声明,初始化与赋值 (示例代码) 变量的声明格式:var <变量名称> [变量类型];...

  • Go语言笔记 | 03-变量的声明和初始化

    Go语言笔记 | 03-变量的声明和初始化 变量声明 在 go 语言中声明一个变量一般要用到关键字 var,变量声...

  • Go语言-变量

    摘自Go语言指南 变量的初始化 变量声明可以包含初始值,每个变量对应一个。如果初始化值已存在,则可以省略类型;变量...

  • Go语言之变量的初始化二

    Go 语言在声明变量时,自动对变量对应的内存区域进行初始化操作。每个变量会初始化其类型的默认值(也就是说每个变量都...

  • Golang Modules 包管理实践

    1、设置环境变量 Windows Linux 2、mod初始化 3、go mod tidy 从 go.mod 删除...

  • Go语言常量和变量

    变量 Go语言变量的定义 定义变量的格式(先定义再初始化)var 数据名称 数据类型数据名称 = 值; 定义变量的...

  • go 变量声明初始化、new、make

    title: go 变量声明初始化、new、makedate: 2019-01-04tags:- golang- ...

网友评论

      本文标题:2-2 Go --- 变量的初始化

      本文链接:https://www.haomeiwen.com/subject/omszyltx.html