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

Go 变量

在Go中,有不同的变量类型,例如:

  • int 存储整数(整数),例如123或-123
  • float32 存储浮点数字,带小数,例如19.99或-19.99
  • string - 存储文本,例如“ Hello World”。字符串值用双引号括起来
  • bool 存储具有两个状态的值:true或false

声明(创建)变量

在Go中,有两种声明变量的方法:

使用var关键字:

使用var关键字,后跟变量名称和类型:

语法

var variablename type = value

注意:您始终必须指定typevalue(或两者)。

使用:=符号

使用:=符号,后跟变量值:

语法

variablename := value

注意:在这种情况下,变量的类型是从值中推断的(这意味着编译器根据值决定变量的类型)。

注意:无法使用:=声明变量,而不将值分配给它。

具有初始值的变量声明

如果从一开始就知道变量的值,则可以在一行中声明变量并为其赋值:

示例

package main
import ("fmt")func main() {var student1 string = "John" //type is stringvar student2 = "Jane" //type is inferredx := 2 //type is inferredfmt.Println(student1)fmt.Println(student2)fmt.Println(x)
}

注意:变量**student2x****的变量类型是从其值推断**的。

没有初始值的变量声明

在Go中,所有变量都已初始化。因此,如果声明变量而没有初始值,则其值将设置为其类型的默认值:

示例

package main
import ("fmt")func main() {var a stringvar b intvar c boolfmt.Println(a)fmt.Println(b)fmt.Println(c)
}

示例解释

在此示例中有3个变量:

  • a
  • b
  • c

这些变量已声明,但未分配初始值。

通过运行代码,我们可以看到它们已经具有其各自类型的默认值:

  • a""
  • b0
  • cfalse

声明后的值分配

可以在声明变量后将值分配给变量。这对于值最初未知的情况很有帮助。

示例

package main
import ("fmt")func main() {var student1 stringstudent1 = "John"fmt.Println(student1)
}

注意:无法使用:=声明变量,而不将值分配给它。

var和 := 之间的区别

var:=之间存在一些小差异:

var:=
可以在函数内部和外部使用仅可在函数内部使用
可以分别进行变量声明和值分配变量声明和值分配不能分别进行(必须在同一行中完成)

示例

此示例显示在函数外部使用var关键字声明变量:

package main
import ("fmt")var a int
var b int = 2
var c = 3func main() {a = 1fmt.Println(a)fmt.Println(b)fmt.Println(c)
}

示例

由于:=在函数外使用,因此运行程序会导致错误。

package main
import ("fmt")a := 1func main() {fmt.Println(a)
}

结果:

./prog.go:5:1: syntax error: non-declaration statement outside function body

Go多变量声明

在Go中,可以在同一行中声明多个变量。

示例

此示例显示如何在同一行中声明多个变量:

package main
import ("fmt")func main() {var a, b, c, d int = 1, 3, 5, 7fmt.Println(a)fmt.Println(b)fmt.Println(c)fmt.Println(d)
}

注意: 如果使用type关键字,则每行只能声明一个类型的变量。

如果未指定type关键字,则可以在同一行中声明不同类型的变量:

示例

package main
import ("fmt")func main() {var a, b = 6, "Hello"c, d := 7, "World!"fmt.Println(a)fmt.Println(b)fmt.Println(c)fmt.Println(d)
}

在块中声明Go变量

多个变量声明也可以组合到块中以增加可读性:

示例

package main
import ("fmt")func main() {var (a intb int = 1c string = "hello")fmt.Println(a)fmt.Println(b)fmt.Println(c)
}

Go变量命名规则

变量可以有简短的名称(如x和y)或更描述性的名称(age,price,carname等)。

Go变量命名规则:

  • 变量名称必须以字母或下划线字符(_)开头
  • 变量名称不能以数字开头
  • 变量名称只能包含字母数字字符和下划线(a-z,A-Z0-9_
  • 变量名称区分大小写(age,Age和AGE是三个不同的变量)
  • 变量名称的长度没有限制
  • 变量名称不能包含空格
  • 变量名称不能是任何Go关键字

多字变量名称

具有多个单词的变量名称可能难以阅读。

有几种技术可用于使它们更易于阅读:

驼峰命名法

每个单词,除了第一个单词以外,都以大写字母开头:

myVariableName = "John"

帕斯卡命名法

每个单词以大写字母开头:

MyVariableName = "John"

蛇形命名法

每个单词之间用下划线字符分隔:

my_variable_name = "John"

最后

为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:

公众号搜索Let us Coding知乎开源中国CSDN思否掘金InfoQ简书博客园慕课51CTOhelloworld腾讯开发者社区阿里开发者社区

看完如果觉得有帮助,欢迎点赞、收藏关注

http://www.lryc.cn/news/114995.html

相关文章:

  • 【雷达通信】非相干多视处理(CSA)(Matlab代码实现)
  • 73. 矩阵置零
  • ‘大数据技术与应用’和‘数据科学与大数据技术’有什么区别
  • 没有jsoup,rust怎么解析html呢?
  • 【C高级】Day4 shell脚本 排序
  • 大模型开发(十六):从0到1构建一个高度自动化的AI项目开发流程(中)
  • 【深入了解pytorch】PyTorch强化学习:强化学习的基本概念、马尔可夫决策过程(MDP)和常见的强化学习算法
  • 尚硅谷张天禹Vue2+Vue3笔记(待续)
  • 深度学习(35)—— StarGAN(2)
  • 连续四年入选!三项荣耀!博云科技强势上榜Gartner ICT技术成熟度曲线
  • Docker实战-操作Docker容器实战(一)
  • c#设计模式-行为型模式 之 观察者模式
  • 开窗积累之学习更新版
  • ffplay简介
  • mysql之limit语句详解
  • 4.while循环
  • 【雕爷学编程】 MicroPython动手做(35)——体验小游戏2
  • mouseover 和 mouseenter
  • [JavaScript游戏开发] 绘制Q版地图、键盘上下左右地图场景切换
  • CI/CD持续集成持续发布(jenkins)
  • Qt5.14.2+QtCreator+PDB 查看源码
  • DOM基础获取元素+事件基础+操作元素
  • MATLAB——感知神经网络学习程序
  • SpringBoot中事务失效的原因
  • Webstorm的一些常用快捷键
  • 系统集成项目成本管理
  • Spring Boot整合ES的两种方式
  • Ajax_3 Ajax原理+ (XMLHttpRequest + Promise )+ 封装一个axios插件库,实现功能。
  • 计算机网络(7) --- UDP协议和TCP协议
  • Jenkins 修改默认管理员帐号