当前位置: 首页 > news >正文

Go语言声明变量

目录

1、var声明变量

重新赋值

2、一次声明多个变量

3、短变量声明法

4、匿名变量


1、var声明变量

        var声明变量的方式是:var 变量名称 类型。

package mainimport "fmt"func main() {/*1、var 声明变量var 变量名称 类型变量名称的命名规则:首字符必须是字母或下划线剩余字符可以是字母、数字或下划线*/var userName string = "张三"// 2、声明变量时,可以省略类型,编译器会根据初始值自动推导出类型var age = 20fmt.Printf("name: %s, age: %d", userName, age)
}

重新赋值

        Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。

	// 错误写法var nameName = "李四"var nameName = "王五"fmt.Println(nameName)

        这样就会报错,不能给同一个变量重复声明,当我们需要为一个变量重新赋值时,做法如下:

	var nameName = "李四"nameName = "王五"fmt.Println(nameName)

         这样就可以重新赋值了,打印结果就是王五。

2、一次声明多个变量

第一种声明方式:var 变量名称,变量名称,... 类型。

	// var 变量名称,变量名称,... 类型var a1, a2 stringa1 = "hello"a2 = "world"fmt.Println(a1, a2)

        这种方式只针对同一类型的变量,如果类型不同就会报错。

        当需要声明多个不同类型的变量时,上面这种方式就不可取了,就需要换一种声明方式,方式如下:

	/*var (变量名称 类型变量名称 类型...)*/var (name stringage  int)name = "李四"age = 20fmt.Println(name, age)

        将要声明的变量用括号包起来,在变量名后面指定它的类型,一行只能声明一个变量。

        也可以在声明时就直接赋值,代码如下:

	var (name = "张三"age  = 20)fmt.Println(name, age)

3、短变量声明法

        在函数内部,可以使用更简略的 := 方式声明并初始化变量。

	// 短变量声明法name := "张三"fmt.Println(name)// 使用短变量一次声明多个变量,并初始化变量a, b, c := 10, 20, "C"fmt.Println(a, b, c)

        但是要注意的是,短变量只能用于声明局部变量,不能用于全局变量的声明

package mainimport "fmt"var nameName = "张三"func main() {age := 20fmt.Printf("name: %s, age: %d", nameName, age)
}

4、匿名变量

        在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量,用一个下划线 _ 表示。

func getUserInfo() (string, int) {return "张三", 20
}

        就比如我重新声明了一个函数,它返回两个数据,类型分别是string和int

	name, age := getUserInfo()fmt.Println(name, age)

        在main函数中声明两个变量,将getUserInfo函数中返回的数据赋值给这两个变量并打印出来。

        如果出现一种情况,就是我现在只希望获取getUserInfo函数中返回的第一个数据,第二个不需要,这样就不能声明多个变量,因为我们声明的变量必须要使用,不然会报错,因此就需要使用到匿名变量。代码如下:

	_, age := getUserInfo()fmt.Println(age)

        这样数据就能正常打印出来,并且不会报错。

        匿名变量不会占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明

http://www.dtcms.com/a/312994.html

相关文章:

  • mybatis实现固定三层树形结构的嵌套查询
  • 怎么修改论文格式呢?提供一份论文格式模板
  • 【ProtoBuf】初识ProtoBuf
  • 【UE5医学影像可视化】读取本地Dicom生成VolumeTexture,实现2D显示和自动翻页
  • 关于记录一下“bug”,在做图片上传的时候出现的小问题
  • B3953 [GESP202403 一级] 找因数
  • 大模型智能体(Agent)技术全景:架构演进、协作范式与应用前沿
  • Python Dash 全面讲解
  • 使用 Vuepress + GitHub Pages 搭建项目文档
  • io_getevents系统调用及示例
  • Android 之 图片加载(Fresco/Picasso/Glide)
  • 第四章:OSPF 协议
  • Docker环境离线安卓安装指南
  • Android 之 存储(Assets目录,SharedPreferences,数据库,内部存储等)
  • 音视频学习(五十):音频无损压缩
  • 使用 Docker 部署 Golang 程序
  • 计数组合学7.12( RSK算法的一些推论)
  • 考研复习-计算机组成原理-第二章-数据的表示和运算
  • PHP面向对象编程与数据库操作完全指南-下
  • 深入解析C++函数重载:从原理到实践
  • 2025年测绘程序设计比赛--基于统计滤波的点云去噪(已获国特)
  • MySQL梳理三:查询与优化
  • python新功能match case|:=|typing
  • Hertzbeat如何配置redis?保存在redis的数据是可读数据
  • 【MySQL安全】什么是SQL注入,怎么避免这种攻击:前端防护、后端orm框架、数据库白名单
  • Android设备认证体系深度解析:GMS/CTS/GTS/VTS/STS核心差异与认证逻辑
  • ELECTRICAL靶机复现练习笔记
  • Leetcode:1.两数之和
  • Java 大视界 -- Java 大数据机器学习模型在金融市场情绪分析与投资决策辅助中的应用(379)
  • ubuntu24.04安装selenium、edge、msedgedriver