Go语言基础-变量(1)

变量相当于内存中的一个数据存储空间的标识,你可以把变量看做是一个内存地址,通过这个地址,我们可以找到这个地址所存储的数据。

这里要注意的是: 变量不是编程必须有的概念,很多函数式的编程语言是没有变量的,因为在函数式编程中,所有的值都是不可变的。

但我们今天要探讨的go,是支持变量的概念的。

在一开始的设想中,如果没有变量,那就意味着一个内存单元或者说寄存器单元的数值在任何时候都不能变。 比如我们的内存可以存储10个数值,一旦有第11个就无法存储,需要加内存。

为了省钱,只好设计为一块内存可以反复使用的,基于这样的设计理念,我们把能代表某块内存的称为变量,变量指向某块内存,其中的值可以变化,这样就能充分利用硬件资源。

当然随着计算机硬件成本越来越低,未来我们也可以设计为任何值都不要发生变化,或许几百年后就没有了变量的概念。

2. 使用变量的步骤

变量使用只需要三个步骤:

1)声明变量

2)给变量赋值

3)使用变量

来看一个小案例:


package main

import "fmt"

func main() {

//定义个i变量,数值类型为int

var i int  

//给变量赋值为10

i=10



fmt.Println("i =", i)



}



注意:

1) 在go语言中,i=10 去赋值,或者用i = 10 量变加空格去赋值,问题都不大。

在这里插入图片描述

  1. 变量表示的是内存中的某一块存储空间。

3) 在这块存储空间里,有自己的名称和类型,也就是我们常说的变量名和数据类型。

3. 使用变量的三种方式

Go语言变量使用的三种方式:

(1) 指定变量类型,声明后若不复制,使用默认值,如int的默认值是0;


package main

import "fmt"

func main() {



var i int

//此处不做任何复制,直接输出结果



fmt.Println("i =", i)



}



输出结果:

在这里插入图片描述

(2) 根据值自行判定变量类型(类型推导);


package main

import "fmt"

func main() {



//var i int

//把这一行注释掉,不定义i的变量,直接在下面赋值

var i = 13.14

var num = 3



fmt.Println("i =", i)

fmt.Println("num =", num)



}



输出结果

在这里插入图片描述

也就是我们并没有给他指定类型,系统会自动推导,判断变量类型。

但这里要注意不定义数据类型和不赋值这两件事不能同时发生。

我们在第一条的时候,调到过可以不赋值,默认为0.,但不赋值也不赋值数据类型,全凭电脑自动帮你推导,行不通。

我们来测试下:


package main

import "fmt"

func main() {



//var i int

//把这一行注释掉,不定义i的数据类型

//var i = 13.14

//这里把赋值注释掉,不进行赋值





fmt.Println("i =", i)



}



在这里插入图片描述

太难为系统了,对不对。

(3) 省略var,=是赋值, :=是声明变量并赋值。

注意 :=左侧变量不应该是已经声明过的,否则会编译错误

正常写法:


package main

import "fmt"

func main() {



var name string



name = "itlaoxin"



fmt.Println("name =", name)



}



在这里插入图片描述

省略var之后的写法


package main

import "fmt"

func main() {



//var name string  此行注释掉,不写



name := "itlaoxin"



fmt.Println("name =", name)



}



执行结果

在这里插入图片描述

可以看到,如果不使用var,就需要在复制的时候加上:

也就是

var name string

name = “itlaoxin”

等价于

name := “itlaoxin”

但我建议大家使用第一种方式,别嫌麻烦,有时候麻烦点更容易理解。

4. 一次声明多个变量的多变量声明

学到这里之后,我们又遇到了一个问题,如果我们有多个变量,每个都需要确定数值类型,然后在赋值似乎有些麻烦。

我们来看个例子:


package main

import "fmt"

func main() {



var n1 = 100

var n2 = 200



var name ="itlaoxin"



fmt.Println(n1,n2,name)



}



输出结果

在这里插入图片描述

我们可以用下面的方法


package main

import "fmt"

func main() {



var (

 	n1 = 100

 	n2 = 200



 	name ="itlaoxin"



)



fmt.Println(n1,n2,name)

}



在这里插入图片描述

可以看到输出的结果是一样的,但是这里需要注意一点: ()写的时候要注意注意中英文。

5. 官方推荐的变量声明形式

我们平时的正常写法


package main

import "fmt"

func main() {



var f = 3.14

var a = 3.14

fmt.Println(a,f)



}



当我们这么写的时候,go编译器会默认设置为 float64, 如果你不接受默认类型可以改成float32

改成这么写:


package main

import "fmt"

func main() {



var f  int32 = 6

var a float32 = 3.14

fmt.Println(a,f)



}



但官网推荐的是下面的写法:


package main

import "fmt"

func main() {



var f  = int32(6)

var a = float32(3.14)

fmt.Println(a,f)



}



三. 变量的练习


小练习

抄写如下代码,通过代码回顾本小节的内容,并根据自己的理解,进行讲解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值