Golang 入门 : 变量声明
变量声明
在Go中,变量是包含值的一块存储。可以使用变量声明为变量命名。只需使用var关键字,后跟所需的名称以及变量将保存的值的类型。

一旦你声明了一个变量,就可以用=为它分配该类型的任何值:
quantity = 2
customerName = "xiaoming"
还可以在同一语句中为多个变量赋值。只需将多个变量名放在=的左侧,将相同数量的值放在右侧,并使用逗号分隔。
quantity, customerName = 3, "xiaoli"
一旦给变量赋了值,你就可以在任何要使用原始值的上下文中使用它们。
声明变量省略类型
如果你事先知道变量的值是什么,你可以声明变量并在同一行赋值:

你可以为现有变量分配新值,但它们必须是相同类型的值。Go的静态类型确保你不会意外地将错误类型的值赋给变量。

如果在声明变量的同时为其赋值,通常可以在声明中省略变量类型。这个分配给变量的值的类型将用作该变量的类型

短变量声明
如果你声明变量时就知道它的初始值是什么,那么更具有代表性的是使用短变量声明。你不必很明确地声明变量的类型并在之后使用=为其赋值,而是同时使用:=

不需要明确地声明变量的类型,赋给变量的值的类型成为该变量的类型。
当同一个变量名在同一作用域中被声明两次时,我们会得到一个编译错误:

但是,只要短变量声明中至少有一个变量名是新的,这是允许的。新变量名被视为声明,而现有的名字被视为赋值。

这种特殊处理是有原因的:许多Go函数返回多个值。如果仅仅因为要重用其中一个变量而必须分别声明所有变量,那将是一件痛苦的事情。

相反,Go允许你对所有事物使用短变量声明,即使对其中一个变量来说,它实际上是赋值。

由于短变量声明非常方便和简洁,因此它们比常规声明更常用。不过,你仍然会偶尔看到这两种形式,因此熟悉这两种形式很重要。
实践见真知

Golang 入门 : 变量声明的更多相关文章
- Golang入门教程(四)变量声明
Go 语言变量名由字母.数字.下划线组成,其中首个字母不能为数字. 一.Go的语言结构 1.Go的语言基础部分由这几个部分组成 包声明 引入包 函数 变量 语句&表达式 注释 比如下面这个简单 ...
- golang变量声明
func main() { var a1 int a1 = 1 var a = 1 b := 1 var c, d int c = 1 d = 1 var e, f = 1, 2 g, h := 1, ...
- Golang入门(1):安装与配置环境变量的意义
摘要 在几年前学习Java的时候,环境的配置就会劝退一部分的初学者.而对于Golang来说,也需要从环境的配置开始学起.这一篇文章将从如何安装Golang开始讲起,随后将会提到Golang中的环境变量 ...
- es6 快速入门 系列 —— 变量声明:let和const
其他章节请看: es6 快速入门 系列 变量声明:let和const 试图解决的问题 经典的 var 声明让人迷惑 function demo1(v){ if(v){ var color='red' ...
- go语言入门教程:基本语法之变量声明及注意事项
一.变量的使用 1.1 什么是变量 变量是为存储特定类型的值而提供给内存位置的名称.在go中声明变量有多种语法. 所以变量的本质就是一小块内存,用于存储数据,在程序运行过程中数值可以改变 1.2 声明 ...
- [Golang学习笔记] 04 程序实体1 变量声明
变量声明: Go语言的程序实体包含:变量.常量.函数.结构体和接口,是一门静态类型的编程语言. (在声明变量或常量的时候,需要指定类型,或者给予足够信息是的Go语言能够推导出类型) Go语言变量的类型 ...
- Java程序员的Golang入门指南(下)
Java程序员的Golang入门指南(下) 4.高级特性 上面介绍的只是Golang的基本语法和特性,尽管像控制语句的条件不用圆括号.函数多返回值.switch-case默认break.函数闭包.集合 ...
- Java程序员的Golang入门指南(上)
Java程序员的Golang入门指南 1.序言 Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis.类Evernote的云笔记leanote等. 1.1 为什么要学习 如 ...
- Golang 入门 : 结构体(struct)
Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...
- Golang 入门 : channel(通道)
笔者在<Golang 入门 : 竞争条件>一文中介绍了 Golang 并发编程中需要面对的竞争条件.本文我们就介绍如何使用 Golang 提供的 channel(通道) 消除竞争条件. C ...
随机推荐
- Qt/C++音视频开发77-获取本地有哪些摄像头名称/ffmpeg命令日志方式
一.前言 上一篇文章讲使用ffmpeg函数接口去获取本地摄像头信息,这种方式只能从ffmpeg5版本开始才具备,那ffmpeg3/4只能干瞪眼?那肯定不行的,必须要想办法打通这个功能,查阅信息发现可以 ...
- Qt采集本地摄像头推流成rtsp/rtmp(可网页播放/支持嵌入式linux)
一.功能特点 支持各种本地视频文件和网络视频文件. 支持各种网络视频流,网络摄像头,协议包括rtsp.rtmp.http. 支持将本地摄像头设备推流,可指定分辨率和帧率等. 支持将本地桌面推流,可指定 ...
- Qt/C++开源作品45-CPU内存显示控件/和任务管理器一致
一.前言 在很多软件上,会在某个部位显示一个部件,专门显示当前的CPU使用率以及内存占用,方便用户判断当前程序或者当前环境中是否还有剩余的CPU和内存留给程序使用,在不用打开任务管理器或者资源查看器的 ...
- Qt编写安防视频监控系统47-基本设置
一.前言 一个系统中肯定有不少的配置参数存储在配置文件中,配置文件可以是ini文件,也可以是json文件,还可以是自定义格式的文本文件,本人比较推荐ini文件,读写节点极其方便,支持中文内容,各种Qt ...
- Qt通用方法及类库3
函数名 //设置全局样式 static void setStyle(QUIWidget::Style style); static void setStyle(const QString &q ...
- 注册中心如何选型?Eureka、Zookeeper、Nacos怎么选
这是小卷对分布式系统架构学习的第9篇文章,第8篇时只回答了注册中心的工作原理的内容,面试官的第二个问题还没回答,今天再来讲讲各个注册中心的原理,以及区别,最后如何进行选型 上一篇文章:如何设计一个注册 ...
- c# 判断当前用户是否是管理员权限启动应用程序。
. using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; u ...
- c# 远程调用 / Remoting IpcChannel sample
. 远程调用 1. 创建一个远程的可序列化的类,这个类可以在远程调用中用于传输来去,似乎是个公共的类: using System; using System.Collections.Generic; ...
- 2020年最新版区块链面试题1-copy
1. 什么是区块链? 回答:区块链是不间断的经济交易数字分类帐,可以进行编程,以记录不仅是金融交易,还可以记录几乎所有有价值的东西.简单来说,它是一个不可变记录的分散式分布式数据库,该数据库由计算机集 ...
- Kotlin:【接口】【抽象类】