go语言的变量定义示例详解
作者:夕水 发布时间:2024-04-27 15:26:03
前言
特别说明: 本文只适合新手学习
这篇文章带我们入门go语言的定义变量的方式,其实和javascript很相似,所以特意总结在此。
在go语言中,也有变量和常量两种,首先我们来看变量的定义,定义变量我们分为定义单个变量和多个变量。
本文知识点总结如下图所示:
定义单个变量
在定义单个变量中,我们通过var关键字来定义一个变量,其后跟变量名和变量类型,其中变量类型可以省略,语法结构如下:
var <变量名> <变量类型>
例如:
var name string
以上代码表示定义一个变量名为name,变量类型为字符串的变量,注意go语言定义变量的类型始终是在最后。
可以看到,和js定义变量区别不大,只不过是多了一个类型声明,其中这个类型声明还可以省略。
定义多个变量
在go语言中,我们通过,
操作符来定义多个变量,这里定义多个变量也分为两种情况,一种是多个变量都是同一类型,另外一种则是不同类型的多个变量,我们先来看第一种。
定义相同类型的多个变量
和定义单个变量一样,也是使用var关键字来定义,并且通过,
来分隔,语法结构如下:
var <变量名1>,<变量名2>,<变量名3>,... <变量类型>
如:
var name1,name2,name3 string
以上定义了name1,name2,name3 3个变量,变量的类型都是string。
可以看到以上是定义相同类型的多个变量,那么我们应该如何定义不同类型的多个变量呢?
很简单,用()
包裹起来,然后也是使用,
分隔,在每个变量名后面紧跟变量类型即可,语法如下:
var (<变量名1> <变量1类型>,<变量名2> <变量2类型>...)
例如以下代码:
var (name string,age int)
是不是很简单?
变量的初始化
在go语言中,定义了变量,同样也会有初始化的操作,也就是说给变量初始化值,也是通过=
操作符后跟值即可。语法结构如下:
var <变量名> <变量类型>? = <变量值>
例如:
var name string = "eveningwater"
变量类型的省略
其实我们在初始化变量的时候可以省略变量类型,然后go编译器会在编译的时候帮我们自动推导变量类型,这简直就是在写javascript啊,这也是我在以上语法变量类型那一块中标注?的原因,就表示可以写可以不写。例如以上示例代码就可以写成:
var name = "eveningwater"
如此看来,我们定义多个变量同样也可以省略变量类型,如:
var (name,age) = "eveningwater",26
又或者是:
var name1,name2 = "eveningwater","xxx"
var关键字的省略(简短声明)
go语言的定义变量名的关键字var也可以省略,这也是我没有想到的,如下所示:
name1,name2 := "eveningwater","xxx"
感觉挺神奇的,是吧!go把这种省略了var和type的声明叫做简短申明
。这样一来我们就可以在定义变量的时候用这个":="来定义变量了,不,你想多了,使用这种方式来定义变量是有限制的,那就是这种方式只能够作用在函数内部,如果我们要定义全局变量的话,还是要老老实实的写var关键字。
全局变量与局部变量
通过以上的说明,我们知道了定义全局变量和定义局部变量的方式,如下:
var a string = "hello" //全局变量
func test() {
b := " world" //局部变量
c := a + b
fmt.Printf("%s \n", c)
}
特别的变量名
go语言有个很特殊的变量名,那就是下划线"_",为什么说它特殊呢,因为定义它的值都会被丢弃,没错,就是丢弃,例如:
_,num = 35,34
其中_变量值为35将会被丢弃,最后就只剩下值为34的num变量了,感觉这种设计也是挺有意思的。
未使用变量的限制
go语言在编译阶段会对声明但未使用变量报错,比如以下代码就会报错: 声明了i变量但并未使用。
package main
func main(){
//编译阶段报错
var i int
}
常量
常量其实也就是在程序编译阶段定下来的值吗,无法被修改,在go语言中常量也可以被定义成数值,布尔值或者是字符串等类型。它的语法结构如下:
const variableName = value;
例如:
const num int = 10;
其中常量的类型如果需要也可以加上。
来源:https://segmentfault.com/a/1190000042910744


猜你喜欢
- 前言这里先说明一下,网上很多人说阿里规定500w数据就要分库分表。实际上,这个500w并不是定义死的,而是与MySQL的配置以及机器的硬件有
- 原图代码 src = cv2.imread("28.png") gray_src = cv2.c
- 完成人机猜拳互动游戏的开发,用户通过控制台输入实现出拳,电脑通过程序中的随机数实现出拳,每一局结束后都要输出结果。当用户输入n时停止游戏,并
- 如何获取实时股票信息股票信息的接口有很多,之前大家常用的是新浪的,但在年初的时候,新浪的接口突然不能使用,给大家造成了很大的困扰,为此网上也
- 本文实例为大家分享了树回归的具体代码,供大家参考,具体内容如下#-*- coding:utf-8 -*- #!/usr/bin/python
- Sklearn简介Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regr
- SQL Server发展至今,关于日期的格式的控制方法,有传统的方法,比如CONVERT(),也有比较便利的新方法,比如FORMAT();同
- 本文主要介绍了Matlab中plot基本用法的具体使用,分享给大家,具体如下:>> y=[0 0.58 0.70 0.95 0.
- MySQL是一个开源的关系型数据库管理系统,支持多种操作语言,其中最基础、最常用的命令之一就是SELECT语句。在本篇文章中,这里将详细介绍
- 前言首先简单说一下虚拟环境的概念。虚拟环境是由基础环境创建而出,用于独有项目的开发,每个项目都应该有一个独有的环境。第一步检查是否安装Pyt
- 如何加点盐(salt)?为了加强MD5的安全性,从而加入了新的算法部分即加盐值,加盐值是随机生成的一组字符串,可以包括随机的大小写字母、数字
- 什么是Firebug从事了数年的Web开发工作,越来越觉得现在对WEB开发有了更高的要求。要写出漂亮的HTML代码;要编写精致的CSS样式表
- 解决方法:应对这种情况有以下几种方法:1、购买第三方软件(一般估计很少人买)2、自己编程一个小软件来执行,但是这个逻辑性要求比较高,而且编程
- 前言我们在写应用时,基本都会用到配置文件,从各种 shell 到 nginx 等,都有自己的配置文件。虽然这没有太多难度,但是配置项一般相对
- 前言在使用Python进行网络编程或者爬取一些自己感兴趣的东西时,总避免不了进行一些数据传输、存取等问题,Python的文件对象以及其他扩展
- python将字符串转换成数组的方法。分享给大家供大家参考。具体实现方法如下:#------------------------------
- 自己写了一个简单的python脚本,用来推送zabbix告警到钉钉机器人,推送格式为markdown,有需要的可以自己修改markdown的
- 前言刚刚看了EuroPython 2017一篇演讲,Why You Don't Need Design Patterns in Py
- 实现效果实现代码import matplotlib.pyplot as pltfrom skimage import iofile_name
- 以一种有意义的方式组织数据可能是一项挑战。有时你需要的可能是一个简单的排序,但是通常你需要做更多,你需要分组来进行分析和统计。幸运的是,SQ