变量

变量介绍

变量这个词来源于数学,类似方程中的x、y,代表的是存储在计算机中的值。这里主要介绍Go和其它编程语言不一样的地方,在前面我们提到过,Go是一门静态语言。静态语言区别动态语言一个重要的特性就是变量的类型不可变,一般是在声明的时候就指定类型,之后就不可修改它的类型,而动态语言可以随时修改变量的类型。Go的变量可以在声明的时候不指定类型而是直接赋值,Go会自动根据值判断变量的类型,比如:

var i = 1

当然这时i的类型(int)也就确定了之后不能修改i的类型。

也可以声明的时候指定类型:

var i int

这里面的i就是int类型。如果变量声明的时候没有给定初始值,那默认就是零值,比如:

var i int
var s string fmt.Println(i)
fmt.Println(s)

输出是:

0

这里string的零值是""。bool类型的零值是false,以后讲到的指针类型零值是nil

Go的简短形式:=声明

上面介绍过,Go可以在变量定义的时候比指定类型,系统自动判断类型,那声明的变量的时候加上var是不是感觉有点多余了。Go可以用:=这种写法直接声明变量例如:

i := 5
a := false

这时i就是int类型值为5a就是bool类型值为false,需要注意的是它只能被用在函数中,不能全局的声明变量例如:

package main

import "fmt"
i := 1 func main() {
fmt.Println(i)
}

这样是不行的。

还有就是相同的变量,在同一个代码块中只能这样被声明一次,第二次声明也是错误的例如:

package main

import "fmt"

func main() {
i := 1
i : = 2
fmt.Println(i)
}

这样也会报错。

多变量声明

多变量声明是指一次可以声明多个变量例如

var i, j, k int
i, j, k = 0, 1, 2 var m, n = 1, 2
var a, b = 1, false

需要指出的是多个变量声明可以指定不通的类型例如上面 var a, b = 1, false

也支持:=形式的多变量声明

a, b := 1, false

只要 := 左侧出现了新的变量就可以例如:

a, b := 1, false
b, c := false, 1

Go的100天之旅-03变量的更多相关文章

  1. PHP内核之旅-3.变量

    PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli PHP内核之旅-3.变量 一.弱类型语言 php是弱类型语言.一个变量可以表示任意数据类型. php强大的一 ...

  2. Python学习--03变量类型

    变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创 ...

  3. java基础03变量和基本数据类型

    package cn.bdqn.test; /** * * @author 小豆腐 * * 变量:会变化的量?? * 一个数据在内存中存储空间的表示!在运行期间可以动态改变! * * 关键字:在jav ...

  4. JAVA笔记03 变量和运算符 面试题以及笔记

    标识符的命名规则需要注意哪几点? 定义 就是给类,接口,方法,变量等起名字的字符序列 组成规则 英文大小写字母 数字 $和_ 注意事项 不能以数字开头 不能是java中的关键字 区分大小写 常见的命名 ...

  5. Java知识系统回顾整理01基础03变量03字面值

    一.字面值定义 创建一个Hero对象会用到new关键字,但是给一个基本类型变量赋值却不是用new. 因为基本类型是Java语言里的一种内置的特殊数据类型,并不是某个类的对象.  给基本类型的变量赋值的 ...

  6. day 03 变量与基本数据类型

    变量的命名规范 一:变量命名的大前提,应该能够反映出变量值所记录内容 1:变量名只能由数字,字母,下划线组成 2:变量名不能以数字开头 3:变量名不能使用系统的关键字,不然可能会报错 二:变量名的命名 ...

  7. Go的100天之旅-04基础数据类型

    基础数据类型 在变量的定义中,我们讲了每个变量是有类型的,类型在计算机中是用来约束数据的解释.Go语言和其它计算机语言一样,提供丰富了丰富的数据类型,我们就来看看到底有哪些类型,同时也可以比较一下它和 ...

  8. Go的100天之旅-02基本语法

    基本语法 Go关键字 下面是Go的25个关键字: break default func interface select case defer go map struct chan else goto ...

  9. Go的100天之旅-常量

    常量 简介 道可道,非常道.这里常道指的永恒不变的道理,常有不变的意思.顾名思义和变量相比,常量在声明之后就不可改变,它的值是在编译期间就确定的. 下面简单的声明一个常量: const p int = ...

随机推荐

  1. 使用 Kafka + Spark Streaming + Cassandra 构建数据实时处理引擎

    Apache Kafka 是一个可扩展,高性能,低延迟的平台,允许我们像消息系统一样读取和写入数据.我们可以很容易地在 Java 中使用 Kafka. Spark Streaming 是 Apache ...

  2. Pycharm下安装Numpy包

    Numpy--Numerical Python,是一个基于Python的可以存储和处理大型矩阵的库.几乎是Python 生态系统的数值计算的基石,例如Scipy,Pandas,Scikit-learn ...

  3. 用了那么多年的 Master 分支或因种族歧视而成为历史?

    最近真的是活久见了...不知道你是否也有碰到之前Fork过的国外开源项目,最近突然崩了,原因居然是好多项目都把master分支改为了main分支!更可怕的是修改原因居然是涉及种族歧视.用了那么多年的m ...

  4. 绕过PowerShell执行策略方法总结

    默认情况下,PowerShell配置为阻止Windows系统上执行PowerShell脚本.对于渗透测试人员,系统管理员和开发人员而言,这可能是一个障碍,但并非必须如此. 什么是PowerShell执 ...

  5. Java字符串类型详解

    Java 字符串类主要有String.StringBuffer.StringBuilder.StringTokenizer 1.字符串类型底层都是使用char数组进行实现. 2.从jdk1.7以后,S ...

  6. 05.DBUnit的使用

    相信做过单元测试的人都会对JUnit 非常的熟悉了,今天要介绍的DbUnit(http://dbunit.sourceforge.net/ ) 则是专门针对数据库测试的对JUnit 的一个扩展,它可以 ...

  7. springboot @Cacheable 基本使用

    加入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  8. 使用TimerTask创建定时任务

    使用TimerTask创建定时任务,打包之后应用于linux系统 step1:创建java项目 step2:代码实现 定时任务实现类CreateTask.java是打印操作者的名字 配置准换类Conf ...

  9. BOM问题-对于php的影响

    甲.BOM说明 BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记.这个标记是可选的,UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明当前编码方式.但如果文件 ...

  10. JDK8--03:lambda表达式语法

    对于lambda表达式的基础语法,一个是要了解lambda表达式的基础语法,另外一个是需要了解函数式接口 一.lambda表达式基础语法描述 java8中引入了新的操作符  ->  ,可以称为l ...