Golang(3)-变量与常量的定义

Go基础:Go变量、常量及运算符详解 本文介绍了Go语言中变量、常量和运算符的基础知识。变量用于存储可变数据,可通过var或:=声明;常量用于存储不可变值,使用const声明。文章详细讲解了变量的声明、初始化和使用方法,以及常量的特点和使用场景。同时,全面介绍了算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等各类运算符的功能和示例代码,为编写高效、清晰的Go程序提供了基础指导。变量与常量的区别表格清晰展示了二者的关键差异。 阅读详情


更多关于Golang核心编程知识的文章请看:Golang核心编程(0)-目录页


变量是几乎所有编程语言中最基本的组成元素。从根本上说,变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。在Go语言中,常量是指编译期间就已知且不可改变的值。常量可以是数值类型(包括整型、
浮点型和复数类型)、布尔类型、字符串类型等。

一、变量

1.1、变量声明

Go语言引入了关键字 var ,而类型信息放在变量名之后:

	var v1 int
	var v2 string
	var v3 [10]int  // 数组
	var v4 []int // 数组切片
	var v5 struct {
		f int
	}
	var v6 *int // 指针
	var v7 map[string]int  // map,key为string类型,value为int类型
	var v8 func(a int) int
	var v9,v10 int //v9和v10都声明为int型

var 关键字的另一种用法是可以将若干个需要声明的变量放置在一起,免得程序员需要重复写 var 关键字,如下所示:

 var (
	v1 int
	v2 string
)
1.2、变量初始化

对于声明变量时需要进行初始化的场景, var 关键字可以保留,但不再是必要的元素,如下所示:

	var v1 int = 10 // 正确的使用方式1
	var v2 = 10  // 正确的使用方式2,编译器可以自动推导出v2的类型
	v3 := 10  // 正确的使用方式3,编译器可以自动推导出v3的类型

指定类型已不再是必需的,Go编译器可以从初始化表达式的右值推导出该变量应该声明为哪种类型,这让Go语言看起来有点像动态类型语言,尽管Go语言实际上是不折不扣的强类型语言(静态类型语言)。

1.3、变量赋值

在Go语法中,变量初始化和变量赋值是两个不同的概念。下面为声明一个变量之后的赋值过程:

	var v10 int
	v10 = 123

Go语言的变量赋值与多数语言一致,但Go语言中提供了C/C++程序员期盼多年的多重赋值功能,比如下面这个交换 i 和 j 变量的语句:
i, j = j, i
在不支持多重赋值的语言中,交互两个变量的内容需要引入一个中间变量:
t = i; i = j; j = t;

1.4、匿名变量

我们在使用传统的强类型语言编程时,经常会出现这种情况,即在调用函数时为了获取一个值,却因为该函数返回多个值而不得不定义一堆没用的变量。在Go中这种情况可以通过结合使用多重返回和匿名变量来避免这种丑陋的写法,让代码看起来更加优雅。

假设GetName()函数的定义如下,它返回3个值,分别为 firstName 、 lastName 和
nickName :

func GetName() (firstName, lastName, nickName string) {
	return "May", "Chan", "Chibi Maruko"
}

若只想获得 nickName ,则函数调用语句可以用如下方式编写:
_, _, nickName := GetName()

二、常量

在Go语言中,常量是指编译期间就已知且不可改变的值。常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等。

2.1、字面常量

所谓字面常量(literal),是指程序中硬编码的常量,如:

	3.14159265358979323846  // 浮点类型的常量
	3.2+12i // 复数类型的常量
	true // 布尔类型的常量
	"foo"  // 字符串常量
2.2、常量定义

通过 const 关键字,你可以给字面常量指定一个友好的名字:

	const Pi float64 = 3.14159265358979323846
	const zero = 0.0 // 无类型浮点常量
	const (
	size int64 = 1024
	eof = -1 // 无类型整型常量
	)
	const u, v float32 = 0, 3 // u = 0.0, v = 3.0,常量的多重赋值
	const a, b, c = 3, 4, "foo"
// a = 3, b = 4, c = "foo", 无类型整型和字符串常量
2.3、预定义常量

Go语言预定义了这些常量: true 、 false 和 iota 。
iota 比较特殊,可以被认为是一个可被编译器修改的常量,在每一个 const 关键字出现时被重置为0,然后在下一个 const 出现之前,每出现一次 iota ,其所代表的数字会自动增1。

从以下的例子可以基本理解 iota 的用法:

	const ( // iota被重设为0
	c0 = iota  // c0 == 0
	c1 = iota  // c1 == 1
	c2 = iota  // c2 == 2
)
风-车-桥耦合随机振动预测框架:从物理模型到高效代理 本文提出了一种风-车-桥耦合随机振动预测的混合框架,结合物理模型与代理模型实现高效计算。该框架的核心数学本质是时变参数-随机激励-高维动力系统,主要解决三大计算难点:自由度规模悬殊、时变特性和随机性传播。系统采用分层解耦-代理加速的技术路线,底层基于物理模型建立车辆运动方程和桥梁运动方程,上层通过深度学习代理实现随机激励到响应的端到端映射。文中详细介绍了随机激励建模(包括脉动风速和路面不平度)、子系统建模、耦合求解方法,并提供了可运行的Python代码实现。该框架可显著提高风-车-桥系统随机振动分析的效率, 阅读详情

相关推荐

用FPGA在HDMI上显示自定义字符:从COE文件到OSD叠加的保姆级教程

本文详细介绍了如何在FPGA上实现HDMI视频流的OSD字符叠加技术,从COE文件生成到动态区域控制的完整流程。通过Verilog代码示例和实战技巧,帮助开发者掌握字符ROM设计、像素坐标追踪和动态混合等核心技术,适用于视频监控、系统状态显示等应用场景。

weixin_28720767的博客 231

golang 常量简介

目录 1.单个常量声明 2.多个常量声明 3.常量表达式 1.单个常量声明 常量可以是全局常量,也可以是函数内部的局部常量。常量的值不可修改,常量表达式的值在编译期计算,而不是在运行期。存储在常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。当常量比较少时,推荐如下: const 常量名1 = 常量值/常量表达式 const 常量名2 = 常量值/常量表达式 const pi = 3.14159 2.多个常量声明 和变量声明一样,可以批量声...

whatday的专栏 921

Dynamics 365 On-Premise Server v9.0部署体验

期盼已久的Dynamics 365 On-Premise的版本升级终于在11月初姗姗来迟。 11月2日起已经可以在官方渠道下载正式版的Dynamics 365 Server v9.0安装文件,版本号9.0.2,随手附上中文版安装文件下载地址。 想必已经有不少小伙伴开始尝试各种升级、安装了吧。 Dynamics 365 On-Premise的安装过程,度娘一下已经有很多了,这里就不赘述了,只是...

Roger的专栏 2140

Go语言学习(一):变量常量、基本类型、数组

对于不同的package,如果不相互依赖的话,按照main包中"先import的后调用"的顺序调用其包中的init(),如果package存在依赖,则先调用最早被依赖的package中的init(),最后调用main函数。是go语言的常量计数器,只能在常量的表达式中使用。2. 数组定义:var a [len]int,比如:var a [5]int,数组长度必须是常量,且是类型的组成部分。3. 长度是数组类型的一部分,因此,var a[5] int和var a[10]int是不同的类型。

Lay_XZ的博客 479

基于YOLOv8的MVTec AD缺陷检测系统设计与实现

速度快,精度高;支持 anchor-free 架构;支持实例分割和图像分类;模块化代码,易于部署与改进;完美兼容 ONNX、TensorRT 等推理框架;官方支持多平台训练和推理(CPU/GPU)。YOLOv8 是工业视觉检测落地非常理想的选择。MVTec AD(Anomaly Detection)数据集包括15类工业对象,每个对象包括多个子类缺陷(例如 “scratch”, “crack”, “hole”)及正常图像。类别缺陷子类bottlecablecapsule。

YOLO 932

【Unity】网络游戏实战(序章)MMORPG大型多人在线角色扮演 + 中国象棋联网对战

本系列会基于两种常见的网络游戏类型(MMORPG大型多人在线角色扮演和多人棋牌),从零开始实现网络游戏开发中的大多数环节。【杜绝代码炫技】本系列杜绝代码炫技,摈弃那些高深的设计模式,一切业务逻辑的实现代码追求浅显易懂,即便是网络编程菜鸟,也能循序渐进掌握本系列的核心要点。【授之鱼也授之渔】与一些开源库那样只授予源码不同,本系列还会基于各个技术要点展开详解,并结合切实的可直接运行的Demo,授之鱼更授之渔。

神码编程 1963

Golang中的常量

golang中的常量 文章目录golang中的常量字符常量短声明变量和类型推导布尔值浮点数复数整数数字 在Go中,我们通常使用const关键字来定义一个常量,它为标量值引入了名称,例如2或者3.14或者helloworld.这样的值在Go中被称为常量。常量也可以通过根据常量构建的表达式来创建,例如2+3或者2*3或者“go"+"lang"等。 有些语言支持常量,而有些语言不支持常量,有些语言虽然支持常量,但是定义常量的方式不同,意义也不同。但是在Go中,常数只是一个简单而不变的值。 字符常量 数字常量有很多

CamelGem 7596

FM收音机调试-RDA5807M

收音机调试 IC型号:RDA5807M

mangofu的博客 6171

golang-常量

常量 使用constant关键字进行定义 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型 常量的定义格式: const identifier [type] = value 当然,也可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。 显式类型定义:const Astring = "abc" 隐式类型定义:const A= "a...

cbwcole的博客 1074

【用unity实现100个游戏之16】Unity程序化生成随机2D地牢游戏1(附项目源码)

关于使用TileMap生成随机2D地图,其实之前已经有做过类似的,感兴趣可以看看 但是随着学习深入,发现之前做的比较粗糙和不够全面,最近又在外网看到

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2216

Windows远程桌面开发之九-虚拟显示器(Windows 10 Indirect Display 虚拟显示器驱动开发)

by fanxiushu 2019-06-24 转载或引用请注明原始作者。 这里与远程桌面关系不是太大,但这个部分是xdisp_virt远程控制程序的实现多显示器桌面扩展的子功能,因此也归为远程桌面开发一类。 这篇文章与之前发布的...

fanxiushu的专栏 2万+

golang 常量

文章目录1.类型2.声明3.特点4.iota常量生成器1.声明2.用途3.枚举类型5.无类型常量1.声明2.未明确类型的常量模型6.访问范围跳转 1.类型 注意,只有下面这几种类型 1.数值类型: 整数型、浮点型、复数 2.布尔类型 3.字符串类型 2.声明 常量在定义的时候,就必须要初始化 常量设置以后不能修改 定义格式: const name [type] = value 显示类型 const b string = "abc" 隐式类型 const b

shulei00的博客 526

CRMEB开源电商系统 /api/products SQL注入漏洞复现(CVE-2024-36837)

2024年6月,CRMEB开源电商系统发布了新补丁,修复了一处SQL注入漏洞(CVE-2024-36837)。经分析,该漏洞可以通过请求api的路径接口来进行SQL注入,进而可能导致敏感信息泄露,该注入可暴露后台web绝对路径,深入利用可获取服务器权限,该漏洞无前置条件且利用简单,建议受影响的用户尽快修复漏洞。

0xSec 2883

【Golang】案例为基浅谈Go的变量与常量

✨ 配合案例代码讲解Go语言中的变量与常量

当下的快乐永远最简单! 9758

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Go 语言中常量和变量的定义、使用

Go 语言,作为一种现代编程语言,以其简洁性和高效性赢得了开发者的青睐。在 Go 语言中,常量与变量作为存储和操作数据的基本元素,扮演着至关重要的角色。通过正确理解和使用常量与变量,开发者可以编写出更加健壮和高效的代码。本篇文章将详细介绍 Go 语言中常量和变量的定义、使用规范,以及常见的应用场景,帮助开发者更好地掌握这些核心概念。

栗筝i的博客 3699

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

第 4 章 - Go 语言变量与常量

常量在Go语言中使用const关键字声明。常量的值在编译时确定,不能在运行时修改。通过上述示例,我们详细讲解了Go语言中的变量声明、常量定义和类型推断。这些基本概念是编写Go程序的基础,希望这些内容能帮助你更好地理解和使用Go语言。当然,我们可以继续深入探讨更多关于变量和常量的高级用法,包括变量的作用域、多变量声明、常量的枚举和 iota 的使用等。下面是一些更详细的示例和解释。通过上述示例,我们详细讲解了Go语言中的变量作用域、多变量声明、常量的枚举和iota的使用。

hummhumm的专栏 2156

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Go】P2 Golang 常量与变量

对于无类型常量,在使用时会根据上下文自动推断类型。使用var// 定义单个变量// 定义时初始化var name string = "张三"// 类型推断var name = "张三" // 自动推断为string类型var age = 25 // 自动推断为int类型var height = 175.5 // 自动推断为float64类型方法一:同类型批量定义方法二:不同类型批量定义方法三:批量定义并初始化var name, age, height = "李四", 30, 180.0。

weixin_43098506的博客 940

Golang基础 变量与常量

但在声明多个常量时,可以通过省略值的方式初始化值相同的常量,如果省略了值则表示该常量的值与其上一行的常量值相同,这是变量中无法实现的初始化方式。Go语言编译器在声明变量时,如果没有显式地初始化,则会根据变量的数据类型用默认值对其进行初始化。:在显示初始化变量时,可以省略变量的数据类型,编译器自动根据赋值运算符右值来自动推导出变量的数据类型完成初始化。占位,表示忽略值,这也是Go语言的一语法特点,匿名变量不占用命名空间,不会分配内存,所以也不存在重复声明。:前者是赋值运算符,仅将右值赋给左侧变量;

王清欢的博客 7329

【Golang】案例为基浅谈Go的变量与常量_1

通过以上代码我们可以看到,在的右侧寓意为赋值,因为在Go中支持多赋值和多声明的代码形式,所以我们只需要将要赋值的变量进行位置对换,那么新的值就被赋予了。

2401_89191979的博客 1051

Golang学习历程【第二篇 fmt包&变量、常量的定义】

一个编程爱好者的Golang学习历程

互联网编程爱好者 1344

Go语言变量和常量

如果在相同的代码块中,我们不可以再次对于相同名称的变量使用初始化声明,例如:a := 20 就是不被允许的,编译器会提示错误 no new variables on left side of :=,但是 a = 20 是可以的,因为这是给相同的变量赋予一个新的值。同一个引用类型的指针指向的多个字可以是在连续的内存地址中(内存布局是连续的),这也是计算效率最高的一种存储形式;一个引用类型的变量 r1 存储的是 r1 的值所在的内存地址(数字),或内存地址中第一个字所在的位置。

2201_75368515的博客 1993

学Go一小时之Go 语言变量与常量

本文介绍了Go语言中变量与常量的基本概念和使用方法。变量是存储可变数据的容器,支持多种声明方式(显式声明、类型推导、简洁声明等),而常量用于存储不可变的值。文章详细讲解了变量和常量的声明语法、零值特性以及分组定义等技巧,并通过代码示例展示了不同声明方式的使用场景。最后对比了两者的区别:变量可修改,适用于动态数据;常量不可修改,适合固定配置和枚举值。学习这些基础知识是掌握Go编程的重要第一步,建议通过实践加深理解。

yk9151的博客 1680

Golang极速入门课四,变量与常量

Golang的变量相较于其他语言的 int a 改为了 var a int,且通过语言来警告未使用的变量,将自己所存在的变量都将是存在引用的。既便于垃圾回收的查询与判断,也减少了未使用的变量挤占内存的情况。通过简短形式,使用 := 赋值操作符,也简便工作中不断声明变量的繁琐工作,当一个返回使用到多个变量时不必将这些变量单独进行声明。

猫轻王的博客 2079

Go 语言中的变量和常量

本文介绍了Go语言中变量和常量的核心概念。变量部分阐述了静态语言的类型特性、多种声明方式(标准声明、初始化声明、短变量声明)、全局与局部变量作用域,以及使用注意事项(零值、变量冲突等)。常量部分讲解了const关键字的基本用法、类型定义、命名规范、分组定义特性,并重点解析了iota关键字在枚举定义中的递增规则和表达式应用。文章通过具体代码示例,帮助读者掌握Go语言中变量和常量的规范用法及最佳实践。

一切总会归于平淡 1314

Go 语言编程 — 变量与常量

目录 文章目录目录变量(var)指定数据类型的变量声明根据初始化数值自动判定数据类型的变量定义 变量(var) Golang 使用关键字 var 来声明一个变量。格式如下: var identifier type 也可以一次声明多个变量: var identifier1, identifier2 type 指定数据类型的变量声明 与 C 语言一般,可以在一条语句中完成变量的声明、定义以及初始化。如果没有初始化,则变量默认为零值。 示例: package main import "fmt" func

烟云的计算 2144

【四】Golang 变量和常量

本文全面介绍了 Golang 语言中用于存储数据的基本单元。变量用于存储可变的数据,而常量则用于存储不可变的值。

业精于勤而荒于嬉,行成于思而毁于随 1289
上一篇: Golang核心知识总结
下一篇: Golang(4)-数据类型
BoringRong
BoringRong 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 2万+粉丝 386原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值