变量声明:

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 变量声明的更多相关文章

  1. [Golang学习笔记] 05 程序实体2 作用域访问权限和变量重声明

    作用域访问权限: 程序实体访问权限(作用域)有三种:1. 包级私有(代码包)2. 模块级私有(代码包)3. 公开(全域). 一个函数是一个代码块.一个程序实体的作用域总是会被限制在某个代码块中.好处: ...

  2. [Golang学习笔记] 06 程序实体3 类型断言和类型转换

    类型断言: 语法:<目标类型的值>,<布尔参数> := <表达式>.( 目标类型 ) // 安全类型断言<目标类型的值> := <表达式>. ...

  3. go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量

    go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量 下载安装:go get github.com/astaxie/beego 首页 - beego: 简约 & 强大并存 ...

  4. golang学习笔记8 beego参数配置 打包linux命令

    golang学习笔记8 beego参数配置 打包linux命令 参数配置 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/mvc/contro ...

  5. golang学习笔记5 用bee工具创建项目 bee工具简介

    golang学习笔记5 用bee工具创建项目 bee工具简介 Bee 工具的使用 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/instal ...

  6. golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题

    golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题 下面这个程序运行的能num结果是什么? package main import ( "fmt" " ...

  7. golang学习笔记19 用Golang实现以太坊代币转账

    golang学习笔记19 用Golang实现以太坊代币转账 在以太坊区块链中,我们称代币为Token,是以太坊区块链中每个人都可以任意发行的数字资产.并且它必须是遵循erc20标准的,至于erc20标 ...

  8. go语言,golang学习笔记4 用beego跑一个web应用

    go语言,golang学习笔记4 用beego跑一个web应用 首页 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/ 更新的命令是加个 -u 参数,g ...

  9. go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE

    go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE Go语言是谷歌2009发布的专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速 ...

随机推荐

  1. 原生ajax和jsonp

    封装方法: function ajax(options) { options = options || {}; options.type = (options.type || "GET&qu ...

  2. 深入浅出SharePoint——定制保存Item按钮

    <script type="text/javascript" src="/_layouts/style/jquery-1.4.4.min.js">& ...

  3. WinRAR(5.21)-0day漏洞-始末分析

    0x00 前言 上月底,WinRAR 5.21被曝出代码执行漏洞,Vulnerability Lab将此漏洞评为高危级,危险系数定为9(满分为10),与此同时安全研究人员Mohammad Reza E ...

  4. Linux中如何配置sudo用户

    Linux中的sudo文件在/etc/sudoers,但不建议直接修改此文件: 可以在/etc/sudoers.d文件夹中新建文件,文件名随意,在文件中添加内容如下: 用户名 ALL=(ALL) AL ...

  5. Linux文件系统知识记录——ext2描述

    最近完成了一个编程作业,大致功能是给定一个文件名,给出该文件所在目录和其本身所占用的簇号等信息.笔者选用了Linux的ext系列文件系统作为实验对象,通过实验对ext2文件系统的存储和索引有了一个较为 ...

  6. wireshark:no interface can be used for capturing in this system with the current configuration

    在虚拟机unbuntu中,进行wireshark抓包,出现:no interface can be used for capturing in this system with the current ...

  7. 日常踩坑——Dev C++ pow()函数的坑

    坑 Dev C++ pow()函数 那年冬天,显示屏前坐着如喽啰,那时候我含泪发誓,再也不用Dev. 蓝桥杯官网给提供的版本,没办法bug也得硬着头皮用. 16年蓝桥杯的第八题 四平方和定理: 在De ...

  8. java的四舍五入

    四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么简单了.在讲解之间我们先看如下一个经典的案例: public static void main(String[] ...

  9. 让isis支持高德地图

    概述 由于项目需要用到地图,虽然isis的插件库里有个现成的地图实现,不过用的google地图,虽然google地图可以不用注册Appkey,但完全打不开.所以打算改成国产地图. 效果 先看下运行效果 ...

  10. 改变random.seed()种子值,获取不同的随机值

    random.seed() random.seed()是随机数种子,也就是为随机数提供算法,完全相同的种子产生的随机数列是相同的, 所以如果想产生不同的随机数就需要用当前时间作为种子 一般情况下see ...