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

GO 语言学习 之 变量和常量

变量 

       变量顾名思义,存储的内容是不确定,只有在执行赋值后那一刻是确定的,因为你也不知道赋值后会不会被修改。

变量定义方式:

  1. var <变量名> <变量类型> 
  2. <变量名> := <变量值>
  3. var (a int, b, c....)

示例:

package mainimport "fmt"func main() {var a int  // 定义一个整型变量,默认是零值 (整形的零值是 0)b := 1     // 定义一个整型变量,并赋值为 1fmt.Printf("a = %d b = %d\n", a, b)// 定义相同类型的变量var (c,d,e = 10)fmt.Printf("c = %d d = %d e = %d\n", c, d, e)// 定义相同类型的变量var f, g, h string = "hi", "boy", "go"fmt.Printf("f = %s g = %s h = %s\n", f, g, h)// 定义多个不同类型的变量,我想通常没人这么写吧,也保不齐会有var i int, j float64, k []intfmt.Printf("i = %d j = %f k = %v\n", i, j, k)// 定义不相同类型的变量var (l string,m []int,n = 10)fmt.Printf("l = %s m = %v n = %d\n", l, m, n)// 多点几次看看有没有意外收获var ch chan intfmt.Printf("ch %v\n", ch)fmt.Printf("ch %v\n", ch)
}

扩展知识:

1. 各种数据类型的零值

        整数类型: 0

        浮点数类型: 0.000000

        复数类型:   0+0i

        布尔类型: false

        字符串类型: ""

        指针类型: nil

        切片类型 : []

        映射类型: <nil>

        chan类型:<nil>

        建议自己打印验证一下吧。

2. go 代码里面的变量,如果你定义了,你就得用,否则就会报错

3. 一种特殊的变量:下划线开头的变量, 声明变量可以不被使用,编译不报错

作用域

全局变量

        定义在函数外部的变量,其作用域是整个包。在同一个包内的所有函数都可以访问全局变量(包可以理解为同一个目录里面的所有go文件,都可以使用全局变量,不包含子目录)

局部变量

  1. 定义在函数内部的变量,其作用域仅限于函数内部或代码块内部。
  2. 定义在语句块内部的变量,作用域仅限于语句块内部使用

扩展知识:

  • 包级作用域:在 Go 语言中,全局变量具有包级作用域,即在定义它们的包内的任何地方都可以访问。只要在包内的函数、方法等代码块中,都能直接使用包内的全局变量(如果变量未导出,在包外无法访问)。
  • 不同包之间隔离:不同包之间的全局变量是相互隔离的,一个包无法直接访问另一个包的未导出全局变量,这有助于实现封装和模块化编程,使得每个包可以独立维护和演进,而不会对其他包造成意外影响。

常量

        常量可以理解为,一种特殊的变量,但其值是不会发生变化的,且不允许修改。这里只是让你这么理解不要真的这么使用。

常量定义方式:

  1.         const <常量名> = <常量值>
  2.         const (<常量名1>, <常量名2>. ...)

示例:

package mainimport "fmt"const PIE = 3.14const (MAN   = 1,WOMAN = 2,
)const (ERR_TYPE          = "error type"ERR_INPUT_PARAMS  = "error input PARAMS"ERR_OUTPUT_PARAMS = "error input PARAMS"ERR_VALUE_RANGE   = "outof range"
)const (A = iotaB,C,D
)func main() {fmt.Printf("A %d B %d ERR_TYPE %s", A, B, ERR_TYPE)
}

扩展知识:

  1. 常量定义,未使用,可以编译成功,且运行正常
  2. 常量只能使用基本数据类型的值,不能使用复杂类型(切片,接口,结构体,数值等)

作用域

包级常量

        在包内但在函数外部定义的常量,称为包级常量。包级常量的作用域是整个包。在同一个包内的任何函数、方法或其他代码块中都可以直接访问该常量。如果包被其他包导入,且常量名是导出的(首字母大写),那么其他包也可以访问这个常量。

局部常量

        在函数内部或代码块内部定义的常量,称为局部常量。局部常量的作用域仅限于其定义所在的函数或代码块。一旦程序执行离开该函数或代码块,该常量就超出了作用域,无法再被访问。

相关文章:

  • 【git学习】学习目标及课程安排
  • React Native 如何实现拉起App
  • Spring Boot 3.2.11 Swagger版本推荐
  • js防止重复提交的3种解决方案
  • 小程序学习笔记:自定义组件创建、引用、应用场景及与页面的区别
  • AI辅助编写前端VUE应用流程
  • 开疆智能CCLinkIE转ModbusTCP网关连接组态王配置案例
  • MySQL在C中常用的API接口
  • [Python] -基础篇2-Python中的变量和数据类型详解
  • Maven生命周期与阶段扩展深度解析
  • Tomcat Maven 插件
  • 本年度TOP5服装收银系统对比推荐
  • 工作台-01.需求分析与设计
  • Java基础(五):流程控制全解析——分支(if/switch)和循环(for/while)的深度指南
  • iOS 远程调试与离线排查实战:构建非现场问题复现机制
  • 如何构建个人AIagent
  • RabitQ 量化:既省内存又提性能
  • Git下载与使用完全指南:从安装到基础操作详解,附上git的学习网站(很直观)(可以模拟git的全过程)
  • 【数据挖掘】数据采集和预处理
  • 从输入到路径:AI赋能的地图语义解析与可视化探索之旅