[Golang学习笔记] 04 程序实体1 变量声明
变量声明:
Go语言的程序实体包含:变量、常量、函数、结构体和接口,是一门静态类型的编程语言。
(在声明变量或常量的时候,需要指定类型,或者给予足够信息是的Go语言能够推导出类型)
Go语言变量的类型可以是预定义的类型,也可以是程序自定义的函数、结构体或接口。
Go语言常量的类型,只能是Go语言预定义的基本类型。
面试题:变量声明赋值有几种方式?
1. 用关键字 var
- var num int
- var num int =
- var num =
2. 短变量定义 :=
基于第一种方式的代码,赋值符号=右边的代码不动,左边只留下num,再把=变成:=.
- num :=
Tips: 函数外的每个语句都必须以关键字开始(var, func等等),
因此 := 结构不能在函数外使用。
考察点: 一个是要知道Go语言中的类型推断,以及他在代码中的基本体现,另一个是短变量声明的用法。
Q1:Go语言的类型推断可以带来哪些好处?
代码重构。不改变某个程序与外界的任何交互方式和规则,只改变内部实现。
Go语言是静态类型,一旦在初始化变量时确定了他的类型,之后就不可能再改变。
一句话回答:Go语言的类型推断 1.明显提升程序的灵活性,便于重构。2. 同时又不会给代码维护带来额外负担,更不会损失程序的运行效率。
Q2:变量的重声明是什么意思?
是对已经声明过的变量再次声明。
前提条件:
1. 类型必须与其原来的类型相同。
2. 只可能发生在某一个代码块中。
3. 只有在使用短变量声明时才会发生。
4. 被“声明并赋值”的变量必须时多个,并且其中至少有一个是新的变量。
Tips:如果两个变量位于不同的语法块中,短声明语法表示的仍然是“声明”而非“赋值”。此时他们就是重名的变量了,而且内层变量会“覆盖”外部变量。
var err error
n, err := io.WriteString(os.Stdout, "Hello, everyone!\n")
使用短变量声明对新变量n和旧变量err进行了声明并赋值,这时也是对后者的重声明。
Tips:常量不能用 := 语法声明。
本学习笔记是仅为了总结自己学到的Go语言核心知识,方便以后回忆,文中部分内容摘录自极客时间的《Go语言核心36讲》专栏,如有侵权,请联系我删除。
[Golang学习笔记] 04 程序实体1 变量声明的更多相关文章
- [Golang学习笔记] 05 程序实体2 作用域访问权限和变量重声明
作用域访问权限: 程序实体访问权限(作用域)有三种:1. 包级私有(代码包)2. 模块级私有(代码包)3. 公开(全域). 一个函数是一个代码块.一个程序实体的作用域总是会被限制在某个代码块中.好处: ...
- [Golang学习笔记] 06 程序实体3 类型断言和类型转换
类型断言: 语法:<目标类型的值>,<布尔参数> := <表达式>.( 目标类型 ) // 安全类型断言<目标类型的值> := <表达式>. ...
- go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量
go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量 下载安装:go get github.com/astaxie/beego 首页 - beego: 简约 & 强大并存 ...
- golang学习笔记8 beego参数配置 打包linux命令
golang学习笔记8 beego参数配置 打包linux命令 参数配置 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/mvc/contro ...
- golang学习笔记5 用bee工具创建项目 bee工具简介
golang学习笔记5 用bee工具创建项目 bee工具简介 Bee 工具的使用 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/instal ...
- golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题
golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题 下面这个程序运行的能num结果是什么? package main import ( "fmt" " ...
- golang学习笔记19 用Golang实现以太坊代币转账
golang学习笔记19 用Golang实现以太坊代币转账 在以太坊区块链中,我们称代币为Token,是以太坊区块链中每个人都可以任意发行的数字资产.并且它必须是遵循erc20标准的,至于erc20标 ...
- go语言,golang学习笔记4 用beego跑一个web应用
go语言,golang学习笔记4 用beego跑一个web应用 首页 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/ 更新的命令是加个 -u 参数,g ...
- go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE
go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE Go语言是谷歌2009发布的专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速 ...
随机推荐
- GPL & Apache License
Copyleft[编辑] GPL不会授予许可证接受人无限的权利.再发行权的授予需要许可证接受人开放软件的源代码,及所有修改.且复制件.修改版本,都必须以GPL为许可证. 这些要求就是copyleft, ...
- [T-ARA][TIAMO]
歌词来源:http://music.163.com/#/song?id=439915067 改了一版格式,先尝试一下,考虑到总不能永远只看着拼音读,所以想把发音按照韩文字来写,以后争取看着韩文字唱. ...
- [T-ARA][한겨울의 숨바꼭질/숨바꼭질][深冬的捉迷藏/捉迷藏]
歌词来源: 深冬的捉迷藏:http://music.163.com/#/song?id=28111190 捉迷藏:http://music.163.com/#/song?id=28111189 作曲 ...
- Angular4 @HostBinding @HostListener
host属性 @Component({ selector: 'jhi-project', templateUrl: './project.html', styleUrls: [], host: { ' ...
- JavaScript的事件概述以及事件对象,事件流
事件处理程序 JavaScript 事件对象是由访问 Web 页面的用户引起的一系列操作,例如:用户点击页面上的某个按钮或者鼠标移动到页面的某个图片上而产生一系列的互动的反馈. 我们通过为指定事件绑定 ...
- 渲染、render与绘制
渲染是抽象到具体的过程: 抽象:图片信息的描述(比如一条线:两个端点的位置.线粗.颜色等特征): 具体:依据抽象信息得到的可视图片(绘制过程). 渲染是中文翻译的问题,有种添油加醋的感觉.直意就是交与 ...
- HTML的CoreText流畅度超过WebView。CoreText第三方框架DTCoreText的介绍
为什么要用CoreText(富文本)来取代WebView去显示内容.主要的原因就WebView有很大的问题,性能,FPS,卡顿,与原生不搭.这些都是大问题. WebView的缺点 1.直接使用WebV ...
- C++Primer学习笔记《三》
数组名事实上就是一个常指针,指向数组元素中第一个的地址,在程序中假设要用指针遍历数组,不能直接用数组名来自增或自减.由于它是常量,一般先把数组名保存一份同类型的指针,然后再用这个指针来自增或是自减来实 ...
- 给trac的ticket添加提交时字段验证
我们在项目管理中使用了trac系统,并且对于ticket添加了以下自定义字段并且对它们的格式都有一定要求: svn版本号:格式为 r1234.多个版本号之间使用半角逗号隔开.如:r1234,r5678 ...
- ZooKeeper学习之路 (五)ZooKeeper API的简单使用 增删改查
zookeeper文件系统的增删改查 public class ZKDemo1 { private static final String CONNECT_STRING = "hadoop1 ...