重学Go语言之变量与常量的声明与使用详解

目录
  • 变量
    • 变量名
    • 声明
    • 变量作用域
  • 常量
    • iota 常量生成器
  • 小结

变量

什么是变量?变量是一块可以随时存放数据的内存区域。在我们申请这块内存区域(声明变量)时,需要指定变量名以及变量的数据类型,数据类型用于说明变量可以存放什么值。

Go是强类型语言,因此Go的变量需要先声明再使用,且声明后不可以改变其数据类型。

变量名

  • 变量名必须以字母或下划线开头。
  • 变量名区分大小写,比如Versionversion是两个不同的变量。
  • 不能用关键字(25个)和保留字(37个)给变量命名。

声明

Go语言变量有两种声明方式,一种是标准的变量声明,一种是简短变量声明。

标准声明变量的方式

Go声明一个变量的标准方式是使用关键字var,另外要注意的是Go变量的数据类型是放在变量名后面的,这点与其他语言不同:

声明一个变量:

var i int
i = 10

声明变量的时候给变量赋值

var i int = 10

在声明不指定数据类型时,Go通过赋值来推断其数据类型:

var i = 10

同时声明多个同类型变量

var m,n int //在同一行声明两个类型相同的变量

同时声明多个变量时,也可以赋初始值:

var q,p = "test",10

批量声明变量:

var(
    s string = "test"
    r int
    t,f bool
)

简短声明变量的方式

除了用关键字var声明变量外,Go还支持简短的局部变量声明。

变量的简短方式使用:=,且不需要指定数据类型,Go会根据声明时赋予的值推断数据语言:

注意,Go的局部变量声明后必须使用,否则会报错。

package main
​
i := 10 //错误
​
func main(){
    i := 10//根据赋值推断i为整型
    i = 100//重新赋予整型的值
    i = "1" //错误,不能再赋予字符串
}

变量作用域

Go是通过包(package)来组织来代码,对于在包内声明的变量(或者函数、常量、结构体等)都是通过变量名的首字母是否大写来区分是否包外可见,当首字母大写时,则其他包可以访问该变量。

在一个包中定义两个变量:

package A
​
var age int = 10 //包外不可见
​
var Username string = "test" //包外可见

接下来,我们在另一个包中引入上面的包:

package B
​
import A
import "fmt"
​
func main(){
  fmt.Println(A.Username)//可以访问
  fmt.Println(A.age) //错误,无法访问小写字母开头的变量
}

常量

变量的值在运行中可以随时改变,而常量的值则在赋值后不能发生改变,常量的值在程序编译时就已经确定,因此常量在声明时必须赋值。

Go语言使用const关键来声明一个常量。

const Version = "1.0"

const pi float = 3.14

像变量一样声明多个常量:

const (
	v1 = 100
	v2
	v3
)

上面这种声明方式,常量v2v3的值100。

iota 常量生成器

有时候我们常常需要声明一些有规则的常量,比说月份或是星期这样的枚举值:

const (
    Sunday int = 0
    Monday int = 1
    Tuesday int = 2
    Wednesday int = 3
    Thursday int = 4
    Friday int = 5
    Saturday int = 6
)

上面这种声明常量的方式就比较麻烦,每个常量值都需要赋值。

而用Go提供了iota常量生成器,在声明这种有规则的常量时,可以避免一个一个常量初始化的麻烦:

const (
    Sunday int = iota
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
)

在这个例子中,iota所在第一行常量Sunday会被置为0,接下来的常量依次递增。

使用_符号后,也可以跳过某个值或者中间插入其他值:

const (
		s1 = iota //0
		22        //1
		_         //跳过
		s4        //3
		s5        //4
		s6 = 100  //中间插入某个值
		s7 = iota //0
	)

iota也可计算后再赋给常量:

const (
	January Month = 1 + iota
	February
	March
	April
	May
	June
	July
	August
	September
	October
	November
	December
)

小结

Go的变量与常量的声明是把数据类型放在变量名后面的,这点与其他编程语言不同,另外,变量和常量名首字母大小写决定该变量或常量是否包外可见。

到此这篇关于重学Go语言之变量与常量的声明与使用详解的文章就介绍到这了,更多相关Go语言变量 常量内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Golang编程中的常量与变量

    Go语言常量 常量是指该程序可能无法在其执行期间改变的固定值.这些固定值也被称为文字. 常量可以是任何像一个整型常量,一个浮点常量,字符常量或字符串文字的基本数据类型.还有枚举常量. 常量是一样,只是它们的值不能自己定义后进行修改常规变量处理. 整型常量 一个整数文字可以是十进制,八进制,或十六进制常数.前缀指定基或基数:0x或0X的十六进制,0表示八进制,并没有为十进制. 一个整数文字也可以有一个后缀为U和L的组合,分别为无符号和长整型.后缀可以是大写或小写,并且可以以任意顺序. 这里是整数常

  • Go语言中的变量和常量

    一.变量相关 1.变量声明 C# : int a; Go : var a int; 需要在前面加一个var关键字,后面定义类型 可以使用 var( a int; b string;)减少var 2.变量初始化 var a int = 10 // 正确的使用方式1 var a = 10 // 正确的使用方式2,编译器可以自动推导出v2的类型 a := 10 // 正确的使用方式3,编译器可以自动推导出v3的类型 在:=左侧的变量不应该是已经被声明过的 3.变量赋值 注意:Go语言的新特性 “Sim

  • Golang学习笔记(二):类型、变量、常量

    基本类型 1.基本类型列表 复制代码 代码如下: 类型        长度     说明 bool         1      true/false,默认false, 不能把非0值当做true(不用数字代表true/false) byte         1      uint8 别名 rune         4      int32别名. 代表一个unicode code point int/unit            一来所运行的平台,32bit/64bit int8/uint8  

  • 重学Go语言之变量与常量的声明与使用详解

    目录 变量 变量名 声明 变量作用域 常量 iota 常量生成器 小结 变量 什么是变量?变量是一块可以随时存放数据的内存区域.在我们申请这块内存区域(声明变量)时,需要指定变量名以及变量的数据类型,数据类型用于说明变量可以存放什么值. Go是强类型语言,因此Go的变量需要先声明再使用,且声明后不可以改变其数据类型. 变量名 变量名必须以字母或下划线开头. 变量名区分大小写,比如Version和version是两个不同的变量. 不能用关键字(25个)和保留字(37个)给变量命名. 声明 Go语言

  • C语言的变量与常量 字符字符串与转义字符详解

    目录 一.变量 1.1定义变量的方法 1.2变量的分类 1.3变量的使用 二.常量 2.1字面常量 2.2 const修饰的常变量 2.3#define定义的标识符常量 2.4 枚举常量 三.字符和字符串 3.1 定义 3.2字符串的应用 3.3转义字符 四.注释 总结 一.变量 1.1定义变量的方法 如图中所示,变量可被定义为各种数据类型,如int 整型 char字符数据类型,short短整型,float单精度浮点数,double双精度浮点数等等.一般在变量定义后,需给变量赋值,如图中对所有变

  • Go语言的变量、函数、Socks5代理服务器示例详解

    Go语言中变量的声明和JavaScript很像,使用var关键字,变量的声明.定义有好几种形式 1. 变量和常量 // 声明并初始化一个变量 var m int = 10 // 声明初始化多个变量 var i, j, k = 1, 2, 3 // 多个变量的声明(注意小括号的使用) var( no int name string ) // 声明时不指明类型,通过初始化值来推导 var b = true // bool型 // := 隐含声明变量并赋值 str := "mimvp.com"

  • 重学Go语言之数组的具体使用详解

    目录 什么是数组 数组的创建 访问数组的元素 数组的长度 如何遍历数组 数组的比较 查找数组中的元素 将数组作为函数参数 二维与多维数组 小结 什么是数组 什么是数组?数组是有固定长度的相同数据类型元素的集合, 如下图所示: 从数组的定义以及上面的示例图我们可以得到数组的三个特征: 固定长度,数组的长度在编译时就要确定. 每个元素的数据类型相同. 数组索引从0开始,索引的最大值为数组长度减1. 数组的创建 直接声明数组变量,在声明时必须指定长度: var iArray [2]int var sA

  • 重学Go语言之运算符与控制结构详解

    目录 运算符 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 指针运算符 运算符的优先级 控制结构 If For Switch 小结 运算符 运算符的作用是将操作数组合成表达式,比如下面的代码中,我们通过赋值和加号组成了两个表达式: var i,j = 1,2 n := i + j Go的运算符大体分为六种:算术运算符.关系运算符.逻辑运算符.位运算符.赋值运算符和指针运算符. 算术运算符 运算符 含义 + 加号,除了用于整数,浮点数,复数外,还可以用于字符串的拼接 - 减号 * 相乘

  • C语言 数据结构之数组模拟实现顺序表流程详解

    目录 线性表和顺序表 线性表 顺序表 静态顺序表 动态顺序表 代码已经放在Gitee上,需要可以小伙伴可以去看看 用C语言数组模拟实现顺序表 Gitee 线性表和顺序表 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列,这是我们广泛使用的数据结构. 线性表在逻辑上是线性结构,也就说是连续的一条直线.但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储. 常见的线性表:顺序表.链表.栈.队列.字符串- 顺序表 顺序表是用一段物理地址连

  • Go语言基础for循环语句的用法及示例详解

    目录 概述 语法 注意 示例一  死循环,读取文件 示例二  打印乘法表 示例三  遍历字符串,数组,map 概述 for循环是一个循环控制结构,可以执行指定次数的循环 语法 第一种 for {} //无线循环 第二种 for 条件语句{} 第三种 for 初始语句; 条件语句; 迭代后语句 {} 第四种 for key,value:=range 表达式/变量{} 注意 省略初始条件,相当于while循环体必须用 { } 括起来初始化语句和后置语句是可选的如果只剩下条件表达式了,那么那两个分号也

  • C语言通过三步翻转法实现单词倒置详解

    目录 一.解题思路 二.完整代码与注释 三.代码剖析 1.实现字符串整体的翻转 2.一个单词的翻转 3.字符串中的每一个单词的翻转 一.解题思路 如何将一句话的单词倒置,而标点不倒置? 例如:I like beijing. 倒置成:beijing. like I 可以利用三步翻转法,先将整句话倒置,再将每个单词倒置.前面的例子中输入的内容有空格,如果使用 scanf() 函数的话,scanf 检测到空格后就停止录入了:所以要使用 gets() 函数,gets 可以直接录入一行,包括空格. 代码示

  • C语言线性表的链式表示及实现详解

    目录 前言 代码实现 1. 单链表的结点构造 2. 构造一个空的头结点 3. 对线性表进行赋值 4.对线性表进行销毁 5.对线性表进行重置 6.判断线性表是否为空 7.获取线性表的长度 8.获取线性表某一位置对应的元素 9.在线性表某一位置插入元素 10.删除线性表某一位置的元素 11.求线性表某一元素的前驱 12.求线性表某一元素的后继 13.打印线性表 运行结果演示 源码 前言 线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,而线性表的链式存储特点则是用一组任意的存储

  • C语言中回调函数和qsort函数的用法详解

    目录 回调函数 指向函数指针数组的指针 qsort(qulick sort)-库函数 回调函数 通过函数指针调用的函数,如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数. 回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. 举例: #include<stdio.h> void menu() { printf("*************************

随机推荐