美文网首页
GO语言基础学习——变量

GO语言基础学习——变量

作者: Amy1234567 | 来源:发表于2023-10-17 10:13 被阅读0次

变量

1. 标准格式

(1). Go语言的变量声明的标准格式为:var 变量名 变量类型

变量声明以关键字var开头,后置变量类型,行尾无须分号。

(2). 批量格式

使用关键字var和括号,可以将一组变量定义放在一起。

var (

    a int

    b string

    c []float

    d func() bool

    e struct { x int }

)

2. 简短格式

除var关键字外,还可使用更加简短的变量定义和初始化语法。

名字:=表达式

需要注意的是,简短模式(short variable declaration)有以下限制:

(1). 定义变量,同时显示初始化

(2). 不能提供数据类型

(3). 只能用在函数内部

和var形式声明语句一样,简短变量声明语句也可以用来声明和初始化一组变量:

i,j := 0,1

下面通过一段代码来演示简短格式变量声明的基本样式:

func main(){ 

    x := 100 

    a,x := 1,"100"

}

因为简洁和灵活的特点,简短变量声明被广泛用于大部分的局部变量的声明和初始化。var形式的声明语句往往是用于显示指定变量类型的地方,或者因为变量稍后会被重新赋值而初始值无关紧要的地方。

3. 初始化类型的默认值

GO语言在声明变量时,自动对变量对应的内存区域进行初始化操作。每个变量会初始化起类型的默认值。例如:

\bullet  整型和浮点型的默认值为0和0.0

\bullet  字符串变量的默认值为空字符串

\bullet  布尔值默认为bool

\bullet  切片,函数,指针变量的默认为nil

变量初始化的标准格式:var 变量名 类型 = 表达式

例如:var hp int = 100

4. 编译器推导类型的格式

在标准格式的基础上,将int省略后,编译器会尝试根据等号右边的表达式推到hp变量的类型。

var hp = 100

等号右边的部分在编译原理里被称为右值(rvalue)

5. 短变量声明并初始化

var的变量声明还有一种更为精简的写法,例如:

hp := 100

这是Go语言推导声明写法,编译器会自动根据右值类型判断出左值的对应类型。

注意:由于使用了:=,而不是赋值的=,因此推导声明写法的左值变量必须是没有定义过的变量。若定义过,将会发生编译错误。

短变量声明并初始化格式在开发中使用比较普遍。

conn,err = net.Dial("tcp", "127.0.0.1:8080")

注意:在多个短变量声明和赋值中,至少有一个新声明的变量出现在左值中,即使其他变量名可能是重复声明的,编译器也不会报错。

conn, err = net.Dial("tcp", "127.0.0.1:8080")

conn2, err = net.Dial("tcp", "127.0.0.1:8080")

上面代码片段,编译器不会报err重复定义。

6. 变量交换

var a int = 100

var b int = 200

b,a = a,b

fmt.Println(a, b)

7. 匿名变量

在编码过程中,可能会遇到没有名称的变量,类型或方法。虽然这不是必须的,但有时候这样做可以极大地增强代码的灵活性,这些变量被统称为匿名变量。

匿名变量的特点是一个下画线“_”,“_”本身就是一个特殊的标识符,被称为空白标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算。使用匿名变量时,只需要在变量声明的地方使用下画线替换即可。

匿名变量不占用内存空间,不会分配内存。匿名变量与匿名变量之间也不会因为多次声明而无法使用。

提示:在 Lua 等编程语言里,匿名变量也被叫做哑元变量。

Go语言变量的作用域

Go语言会在编译时检查每个变量是否使用过,一旦出现未使用的变量,就会报编译报错。

根据变量定义的位置不同,可以分为三个类型:

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

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

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

1. 局部变量

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

局部变量不是一直存在的,它只定义在它的函数被调用后存在,函数调用结束欧这个局部变量就会被销毁。

2. 全局变量

在函数体外声明的变量称之为全局变量,全局变量只需要在一个源文件中定义,就可以在所有源文件中使用,当然,不包含这个全局变量的源文件需要使用"import"关键字引入全局变量所在的源文件后才能使用这个全局变量。

全局变量声明必须以var关键字开头,如果想要在外部包中使用全局变量的首字母必须大写。

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

3. 形式参数

在定义函数时函数名后面括号中的变量叫做形式参数(简称形参)。形式参数只在函数调用时才会生效,函数调用结束后就会被销毁,在函数未被调用时,函数的行参并不占用实际的存储单元,也没有实际值。

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

相关文章

  • 初识Go语言-1

    Go语言学习路径 初识Go语言 Go语言环境搭建与IDE安装 Go语言基础语法 Go语言数据类型 Go语言变量和常...

  • Go语言探索 - 8(原创)

    Go语言基础系列博客用到的所有示例代码 在上一篇文章主要学习了Go 语言变量以及变量的作用域。本篇文章主要学习的是...

  • Go语言探索 - 4(原创)

    Go语言基础系列博客用到的所有示例代码 在上一篇文章中,主要学习了Go语言的变量、指针、指针变量、常量以及类型转换...

  • Go基础学习之包,变量和函数

    学习了一下Golang语言官网推荐的Go基础教程 - A Tour of Go,在此记录包,变量和方法部分的学习心...

  • Go语言基础4 - 数据(基本数据结构)

    概述 我们将用几节来学习Go语言基础,本文结构如下: 数据 本节包含了 Go 为变量分配内存的方式,和常用的数组,...

  • Go语言学习笔记(二)-基础语法

    Go语言结构 Go语言的基础组成有一下几个部分: 包声明 包引入 函数 变量 语句&表达式 注释 关于Go的语言组...

  • GO

    一、基础 1.变量 强类型语言 声明单个变量Go语言在声明变量时,自动对变量对应的内存进行初始化操作,不同于C语言...

  • golang的helloworld

    go语言初识 go语言的变量

  • Go语言基础语法总结

    Go语言基础语法总结 一 变量 变量定义1.1 使用var关键字var a boolvar a bool = tr...

  • 从0开始Go语言,用Golang搭建网站

    实践是最好的学习方式 零基础通过开发Web服务学习Go语言 本文适合有一定编程基础,但是没有Go语言基础的同学。 ...

网友评论

      本文标题:GO语言基础学习——变量

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