Go的100天之旅-03变量
变量
变量介绍
变量这个词来源于数学,类似方程中的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
类型值为5
,a
就是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变量的更多相关文章
- PHP内核之旅-3.变量
PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli PHP内核之旅-3.变量 一.弱类型语言 php是弱类型语言.一个变量可以表示任意数据类型. php强大的一 ...
- Python学习--03变量类型
变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创 ...
- java基础03变量和基本数据类型
package cn.bdqn.test; /** * * @author 小豆腐 * * 变量:会变化的量?? * 一个数据在内存中存储空间的表示!在运行期间可以动态改变! * * 关键字:在jav ...
- JAVA笔记03 变量和运算符 面试题以及笔记
标识符的命名规则需要注意哪几点? 定义 就是给类,接口,方法,变量等起名字的字符序列 组成规则 英文大小写字母 数字 $和_ 注意事项 不能以数字开头 不能是java中的关键字 区分大小写 常见的命名 ...
- Java知识系统回顾整理01基础03变量03字面值
一.字面值定义 创建一个Hero对象会用到new关键字,但是给一个基本类型变量赋值却不是用new. 因为基本类型是Java语言里的一种内置的特殊数据类型,并不是某个类的对象. 给基本类型的变量赋值的 ...
- day 03 变量与基本数据类型
变量的命名规范 一:变量命名的大前提,应该能够反映出变量值所记录内容 1:变量名只能由数字,字母,下划线组成 2:变量名不能以数字开头 3:变量名不能使用系统的关键字,不然可能会报错 二:变量名的命名 ...
- Go的100天之旅-04基础数据类型
基础数据类型 在变量的定义中,我们讲了每个变量是有类型的,类型在计算机中是用来约束数据的解释.Go语言和其它计算机语言一样,提供丰富了丰富的数据类型,我们就来看看到底有哪些类型,同时也可以比较一下它和 ...
- Go的100天之旅-02基本语法
基本语法 Go关键字 下面是Go的25个关键字: break default func interface select case defer go map struct chan else goto ...
- Go的100天之旅-常量
常量 简介 道可道,非常道.这里常道指的永恒不变的道理,常有不变的意思.顾名思义和变量相比,常量在声明之后就不可改变,它的值是在编译期间就确定的. 下面简单的声明一个常量: const p int = ...
随机推荐
- controlfile的情景恢复
控制文件测试 百度百科:控制文件(Control File)是Oracle的物理文件之一,它记录了数据库的名字.数据文件的位置等信息.控制文件的重要性在于,一旦控制文件损坏,数据库将会宕机.如果没有数 ...
- pip未找到
命令终端运行 sudo easy_install pip 安装成功后最后会显示 Installed /Library/Python/2.7/site-packages/pip-9.0.1-py2.7. ...
- python基础001----Python+pycharm环境搭建
一.Python下载安装 1.python下载-----下载地址:https://www.python.org/downloads/windows/ 在python的官网下载python版本,需要下载 ...
- Moco测试知多少?
什么是mock? Mock就是在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来替代它,帮助我们测试这种场景. 一般前端工程师会在后端工程师还没有完成后台接口开发的时候,自己根据事先 ...
- python基础--函数全解析
函数(重点) (1)初始函数 在认识函数之前,我们先做如下的需求: 让你打印10次"我爱中国,我爱祖国".我们在接触函数之前是这样写的. print('我爱中国,我爱祖国') pr ...
- Java并发编程-深入探讨synchronized实现原理
synchronized这个关键字对应Java程序猿来说是非常的熟悉,只要遇到要解决线程安全问题的地方都会使用这个关键字.接下来一起来探讨一下synchronized到底时怎么实现线程同步,使用syn ...
- 面试题64:求 1 + 2 + ... + n
这道题目条件限制严格,需要发散思维...但是作者是以 C++ 语言特性来做讲解的,对于 Java 狗只能说稍微有点参考意义吧!
- SpringMVC 学习笔记(六)拦截器
5.1.处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器) 类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理. ...
- set dict tuple 内置方法
今日内容 * 元祖及内置方法* 字典及内置方法* 集合及内置方法* 字符编码 元祖tuple 与列表类似可以存多个值,但是不同的是元祖本身不能被修改 ```python一:基本使用:tuple 1 用 ...
- 使用json-server与Mockjs搭建模拟服务
为什么使用 在项目开发中,常常需要边写前端页面边写后端接口,但是后端接口服务往往是滞后于前端开发的,或者是不能及时提供的.出于前端开发的迅速和便捷去考虑,我们可以根据后端接口数据结构去模拟(mock) ...