变量 1年前

编程语言
544
变量

Go语言变量

和数学中的变量概念一样,变量有名字,有值,通过名字访问变量。

在计算机编程语言的世界里,变量就是一块内存区域,通过名字,对这块内存区域进行赋值等操作。

1 Go语言变量的命名规则

Go语言的变量命名规则和其它语言一样:由字母,数字,下划线组成

注意:变量名称不能以数字开头

2 Go语言变量的声明

2.1 第一种:标准声明

Go语言变量的声明语法为:

var 变量名  变量类型

变量声明以关键字 var 开头,后面跟变量名,行尾不需要有分号。

示例如下:

var name string
var age int
var isComplete bool

2.2 第二种:一次声明多个变量

Go语言支持一次声明多个变量。语法为:

var (
    name string
    age int
    isComplete bool
)

2.3 第三种:类型推导,即可以不指明类型

Go语言声明变量时,也可以不指定数据类型,这时变量的类型由后面的赋值推导出来

但是这种方式,必须要在声明的时候给一个初始值

语法如下:

var 变量名 = 初始值

示例如下:

var url = "www.helloworld.net"  // 初始值是一个字符串,所以 url 的类型就是 string
var age = 20                    //初始值是20,推导出 age 的类型是 int

当然,上面声明的变量,也可以添加类型,这样就不用推导了

比如 var age int = 20

但是谁会喜欢多写一个单词呢

所以,一般由类型推导出来,就不会主动指定数据类型,毕竟少写一个单词

2.4 第四种:省略 var ,省略类型 , 使用 := 进行变量的声明

Go语言声明变量,有一种简洁的写法,很受程序员喜欢,就是使用 :=进行变量声明

语法如下:

变量名 := 变量值

如下示例:

name := "待兔"    // name 自动推导为 string 类型
age := 18         // age 自动 推导为 int 类型

使用:= 进行变量声明,要注意以下几点:

  • 只能在函数中使用:= 声明变量

  • age := 18 , 则 age必须是未声明过的,如果 age已经声明过,则会编译报错

    var age = 17    // 声明变量 age
    age := 18         // 编译错误,因为 age 在前面已经声明,此时不能使用 := 声明变量
    

3 变量的初始化

每个变量声明后,如果没有给一个初始始,那么变量对应的有一个默认值 。如下

  • 整型和浮点型变量默认值是 0
  • 字符串变量默认值是空字符串,也就是 ""
  • 布尔变量默认值是false
  • 切片,函数,指针,通道变量默认是 nil

如下示例:

var name = "待兔"
var age = 18
var count int         //默认是 0

3.1 匿名变量

在Go语言中,函数是可以返回多个值的,如果我们只想用其中一个,这时就可以用到匿名变量

匿名变量就是一个下划线 _ ,表明返回的值不用,直接丢弃

示例如下:

package main

import "fmt"

//返回 2 个值
func foo() (string, int)  {
    return "待兔", 18
}

func main()  {
    name , _ := foo()    //只接收第 1 个值
    fmt.Println(name)
}

关于函数的定义后面章节会讲解,只需要知道,如果不需要用的返回值,可以使用 _ 接收

上面的 foo() 返回了 2 个值,我们只对第 一 个值感兴趣,所以只接收了第一个值,第二个值直接用 _丢弃

有人会问了,能不能 2 个值都接收,但是只用一个,如下示例:

package main

import "fmt"

//返回 2 个值
func foo() (string, int)  {
    return "待兔", 18
}

func main()  {
    name , age := foo()    // 2 个值都接收,但是下面只打印 name
    fmt.Println(name)
}

这样是不行的,因为Go语言规定了:

  • 变量只要声明了,就必须使用

  • 声明的变量,不使用,编译都不会通过

所以这也是Go语言的设计思想,定义的变量不用,会 ”污染 “ 代码

这样强制性的规定,能让代码变得简洁

4 Go语言常量

关于Go语言常量,有以下特性:

  • 常量是在运行时不能改变其值的,和变量是相反的

  • 声明常量时,必须给一个初始化值

  • 使用const声明一个常量,其它和变量的声明一样

如下:定义了 2 个常量

const pi = 3.14
const url = "www.helloworld.net"

4.1 常量计数器 itoa

itoa 是Go语言常量计数器,只能用在常量表达式中。一般用在常量的声明中

itoa在定义一个常量时,被重置为 0 ,此后每增加一行常量声明,itoa计数增加一次

itoa可以简化常量的定义,这在定义枚举时特尤其有用

示例如下:

const(
    a = iota     // 0
    b             // 1
    c            // 2 
    d             // 3
)

几个常见的示例

  • 跳过某些值

    const (
            a = iota //0
            b        //1
            _
            d        //3
        )
    
  • 中间插队

    const (
            a = iota     //0
            b = 100      //100
            c            //2
            d            //3
        )
    

itoa 最常用的就这上面几种,其它的不太常用,这里不就介绍了,因为意义不大。

小结

通过上面的介绍,我们了解到了变量的一些知识,下面我们总结一下

  • 声明就是内存中的一块区域,这块区域有名字,有类型,能存放值

  • 变量的类型,决定了变量在内存中的占用大小

  • 声明变量使用 var 关键字,:= 可以省略 var和数据类型,但是只能用在方法中,且变量之前未定义过

    下面的示例展示了几种声明变量的方法:

    import "fmt"
    
    func main()  {
    
        var name string
        var name2 string = "待兔"
        var name3 = "待兔"
        name4 := "待兔"
    
        fmt.Println(name,name2,name3,name4)
    }
    
  • 常量是在运行时不可改变的量

  • 常量定义时必须给一个初始值

  • 可以使用 itoa 辅助常量的定义

以上就是本小节的知识,了解了变量相关的知识,为后面章节的学习作铺垫

image
EchoEcho官方
无论前方如何,请不要后悔与我相遇。
1377
发布数
439
关注者
2222620
累计阅读

热门教程文档

PHP
52小节
Rust
84小节
Djiango
17小节
React Native
40小节
Gin
17小节