Go语言变量

九路
• 阅读 242

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 辅助常量的定义

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

点赞
收藏
评论区
推荐文章
Jacquelyn38 Jacquelyn38
2年前
JS变量的内存分配你了解多少?
美国导演昆汀·塔伦蒂诺说:世界上80%的故事都已经拍过了。所以我们要用新方法去拍老故事。JavaScript的所有变量(包括函数)在整个处理过程中都是存放在内存中,所以要对一个变量进行处理。首先得为变量分配内存。JavaScript内存分配和其他语言一样,是根据变量的数据类型来分配内存的,而JavaScript变量的数据类型由所赋的值的类型所决定的。Java
Andrew703 Andrew703
3年前
Python基础核心概念
1变量和简单数据类型变量命名格式:变量名“赋值”1.1变量使用规范使用变量时,需要遵守一些规则。违反这些规则将引发错误。变量名只能包含数字、字母、下划线。变量名不能以数字开头以及不能包含空格。变量名不能将Python保留字和函数名作为变量名。如print等如下是python3的33个保留字列表:
Kevin501 Kevin501
3年前
Go语言中new()和make()的区别
1.Go语言中的值类型和引用类型值类型:int,float,bool,string,struct和数组(数组要特别注意,别搞混了)变量直接存储值,分配栈区的内存空间,这些变量所占据的空间在函数被调用完后会自动释放。引用类型:slice,map,chan和值类型对应的指针变量存储的是一个地址(或者理解为指针),指针指向内存中真
Wesley13 Wesley13
2年前
001 Python中的变量和字符串
1.Python“变量”更像“名字”变量名就像我们现实社会的名字,把一个值赋值给一个名字时,Ta会存储在内存中,称之为变量(variable)。在大多数语言中,都把这种行为称为“给变量赋值”或“把值存在变量中”。不过Python与大多数其他计算机语言的做法稍有不同,Ta并不是把值存储在变量中,而更像是把名字贴在值
Wesley13 Wesley13
2年前
go语言学习笔记(第2章)—类型部分
第2章:顺序编程GO语言被称为"更好的C语言"1\.变量1)变量的声明GO语言引入了关键字 var,而类型信息放在变量名之后例如:varv1int可以将多个变量声明放在一起,例如:var(        v1int        v2string)
Wesley13 Wesley13
2年前
C语言中变量名及函数名的命名规则与驼峰命名法
一、C语言变量名的命名规则:(可以字母,数字,下划线混合使用)1\.只能以字母或下划线开始;2\.不能以数字开始;3\.一般小写;4\.关键字不允许用(eg:intfloat2//error float为保留字不允许用);二、函数名的命名规则
Stella981 Stella981
2年前
GO开发[二]:golang语言基础
一.变量1.声明变量变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。Go语言引入了关键字var,而类型信息放在变量名之后,变量声明语句不需要使用分号作为结束符,示例如下:varv1intvarv2string
Wesley13 Wesley13
2年前
go 的匿名函数和闭包
匿名函数匿名函数是指不需要定义函数名的一种函数实现方式。在Go语言中,函数可以像普通变量一样被传递或使用,这与C语言的回调函数比较类似。不同的是,Go语言支持随时在代码里定义匿名函数。匿名函数由一个不带函数名的函数声明和函数体组成,如下所示:!(https://
Stella981 Stella981
2年前
Django框架 之 模板语言
浏览目录标签过滤器一、标签Tags1、普通变量普通变量用{{}}变量名由数字、字母、下划线组成点.在模板语言中用来获取对象相应的属性值示例:{取variable中的第一个参数}{{variable.0}}{
小万哥 小万哥
4个月前
Go 语言学习指南:变量、循环、函数、数据类型、Web 框架等全面解析
学习基础知识掌握Go语言的常见概念,如变量、循环、条件语句、函数、数据类型等等。深入了解Go基础知识的好起点是查阅Go官方文档文章链接:基本语法了解Go语言的基本语法,包括Go程序的执行方式、包引入、主函数等Go中的变量变量是赋予内存位置的名称,用于存储特