当前位置: 首页 > 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.lryc.cn/news/608778.html

相关文章:

  • 怎么修改论文格式呢?提供一份论文格式模板
  • 【Bluedroid】btif_av_handle_event 流程源码解析
  • 面向智能体的上下文工程:策略、实现与 LangGraph 实践
  • LangChain4J入门:接入大模型
  • 系统学习算法:专题十六 字符串
  • 第三章-提示词-高级:开启智能交互新境界(13/36)
  • 日常--详细介绍qt Designer常用快捷键(详细图文)
  • 【QT】概述
  • 高质量数据集|建设三大难点
  • 01.MySQL 安装
  • 服务器中切换盘的操作指南
  • Android 之 MVVM架构
  • 使用 Docker 部署 Golang 程序
  • 第四章:OSPF 协议
  • Dify中自定义工具类的类型
  • WebMvc自动配置流程讲解
  • MySQL 索引失效的场景与原因
  • 嵌入式开发学习———Linux环境下IO进程线程学习(二)
  • 04.Redis 的多实例
  • 笔试——Day27
  • 前端面试手撕题目全解析
  • 【数据迁移】Windows11 下将 Ubuntu 从 C 盘迁移到 D 盘
  • Redis——常用指令汇总指南(三)(哈希类型)
  • Odoo OWL前端框架全面学习指南 (后端开发者视角)
  • 三角洲行动ACE反作弊VT-d报错?CPU虚拟化如何开启!
  • GitOps:云原生时代的革命性基础设施管理范式
  • Ubuntu20.04 Carla安装与和Ros联合仿真
  • Ubuntu22.4部署大模型前置安装
  • AI + 云原生:正在引爆下一代应用的技术革命
  • LabVIEW小波变换检测信号断点