【Go语言】Go语言中的变量和常量

这篇具有很好参考价值的文章主要介绍了【Go语言】Go语言中的变量和常量。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Go语言中的变量和常量

1 变量

变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。

Go 语言是强类型静态语言,所以变量的声明与赋值方式与 PHP/Python 等动态语言相比有很大的区别。

  • 动态语言(弱类型语言)是运行时才确定数据类型的语言,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型。比如Php、Asp、JavaScript、Python、Perl等等。

  • 静态语言(强类型语言)是编译时变量的数据类型就可以确定的语言,大多数静态语言要求在使用变量之前必须生命数据类型。比如Java、C、C++、C#等。

1.1 变量声明和规则

Go 语言引入了关键字 var,并且将数据类型信息放在变量名之后,此外,变量声明语句不需要使用分号作为结束符,例如声明一个类型为 int 的变量 v1,示例如下:

var v1 int
// 也可以将若干需要声明的变量放置在一起
var (
    v1 int
    v2 string
)

Go 语言支持多种数据类型,这里先简单展示一下

var v1 int              // 整型
var v2 string           // 字符串
var v3 bool             // 布尔类型
var v4 [10]int          // 数组,数组元素类型为整型
var v5 struct (         // 结构体,成员变量 f 的类型为64位浮点型号
    f float64
)
var v6 *int             // 指针,指向整型
var v7 map[string]int   // map(字典),key为字符串类型,value为整型
var v8 func(a int) int  // 函数,参数类型为整型,返回类型为整型

变量在声明之后,系统会自动将变量值初始化为对应类型的零值,这里输出一下上面定义的变量。

【Go语言】Go语言中的变量和常量,Go语言,golang,开发语言,后端

如果变量名包含多个单词,Go 语言变量命名规则遵循驼峰命名法,即首个单词小写,每个新单词的首字母大写,如 userName,但如果你的全局变量希望能够被外部包所使用,则需要将首个单词的首字母也大写。

1.2 变量初始化

如果声明变量时想要同时对变量值进行初始化,可以通过以下这些方式:

var v1 int = 10 // 方式一,常规的初始化操作
var v2 = 10     // 方式二,此时变量类型会被编译器自动推导出来
v3 := 10        // 方式三,可以省略 var,编译器可以自动推导出v3的类型

代码测试如下:

【Go语言】Go语言中的变量和常量,Go语言,golang,开发语言,后端

这里注意Go语言变量声明使用的符号是:=,而不是=

变量进行初始化时,可以不必指定数据类型,这里让Go看上像是静态类型语言,但是与 PHP/Python/JavaScript 等动态语言不同的是,这个推导是在编译期做的,而不是运行时,因此 Go 语言还是不折不扣的静态语言。

另外,出现在 := 运算符左侧的变量应该是未声明过的,否则会导致编译错误,比如下面这个写法:

var i int
i := 2

会出现如下的报错

【Go语言】Go语言中的变量和常量,Go语言,golang,开发语言,后端

1.3 变量赋值与多重赋值

在 Go 语言中,变量初始化和变量赋值是两个不同的概念,变量初始化及变量声明和赋值为一条语句,变量赋值则是先声明变量,再对其进行赋值,初始化只能执行一次,赋值则可以执行多次,下面是变量赋值过程:

// 变量赋值
var v10 int 
v10 = 123
// 多重赋值
i,j = j,i

代码测试:

【Go语言】Go语言中的变量和常量,Go语言,golang,开发语言,后端

1.4 匿名变量

我们在使用传统的强类型语言编程时,经常会出现这种情况,即在调用函数时为了获取一个值,却因为该函数返回多个值而不得不定义一堆没用的变量。

匿名变量语法:

func GetName() (userName, nickName string) {
    return "南歌", "EuanSu"
}
​
func AnonymousVariables() {
    // 匿名变量
    // GetName返回两个值,分别是username和nickName,
    // 其中nickName是string类型,而GetName()函数中没有使用nickName,
    // 此时nickName就是一个匿名变量,它不占用命名空间,不会分配内存,
    // 因此不会产生任何开销。
    _, nickName := GetName()
    fmt.Printf("nickName value is %s\n", nickName)
}

【Go语言】Go语言中的变量和常量,Go语言,golang,开发语言,后端

1.5 变量的作用域

每个变量在程序中都有一定的作用范围,称之为作用域。如果一个变量在函数体外声明,则被认为是全局变量,可以在整个包甚至外部包(变量名以大写字母开头)使用,不管你声明在哪个源文件里或在哪个源文件里调用该变量。在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,函数的参数和返回值变量也是局部变量。

尽管变量的标识符必须是唯一的,但你可以在某个代码块的内层代码块中使用相同名称的变量,此时外部的同名变量将会暂时隐藏(结束内部代码块的执行后隐藏的外部同名变量又会出现,而内部同名变量则被释放),任何的操作都只会影响内部代码块的局部变量。

2 常量

在 Go 语言中,常量是指编译期间就已知且不可改变的值,常量只可以是数值类型(包括整型、 浮点型和复数类型)、布尔类型、字符串类型等标量类型。Go 语言中,我们可以通过 const 关键字来定义常量(遵循 C 语言的约定)。

2.1 常量的定义

通过 const 关键字定义常量时,可以指定常量类型,也可以省略(编译时会自动推导),常见的常量定义方式如下:

const Pi float64 = 3.14159265358979323846 
const zero = 0.0 // 无类型浮点常量 
const (          // 通过一个 const 关键字定义多个常量,和 var 类似
    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", 无类型整型和字符串常量

代码执行测试:

【Go语言】Go语言中的变量和常量,Go语言,golang,开发语言,后端

由于常量的赋值是编译时期执行的,因此赋值的操作中不能出现任何需要运行才能得到结果的函数,例如如下语句就会导致编译错误:

func GetNumber() int {
    return 100
}
const num = GetNumber()

【Go语言】Go语言中的变量和常量,Go语言,golang,开发语言,后端

2.2 预定义常量

GO语言预定义了常量:true、false 和 iota。

iota 比较特殊,认为是一个能够被编译器修改的常量,每一个 const 关键字出现时被重置为 0,每出现一次 iota,其所代表的数字就会自动加1.

const (    // iota 被重置为 0
    c0 = iota   // c0 = 0
    c1 = iota   // c1 = 1
    c2 = iota   // c2 = 2
)
const (
    u = iota * 2;  // u = 0
    v = iota * 2;  // v = 2
    w = iota * 2;  // w = 4
)
const x = iota;  // x = 0
const y = iota;  // y = 0

代码运行测试:

【Go语言】Go语言中的变量和常量,Go语言,golang,开发语言,后端

如果两个 const 的赋值语句的表达式是一样的,那么还可以省略后一个赋值表达式。因此,上面的前两个 const 语句可简写为:

const ( 
    c0 = iota 
    c1 
    c2 
)
const ( 
    u = iota * 2 
    v 
    w 
)

代码运行测试:

【Go语言】Go语言中的变量和常量,Go语言,golang,开发语言,后端

2.3 枚举

此外,常量还可以用于枚举。

枚举中包含了一系列相关的常量,比如下面关于一个星期中每天的定义。Go 语言并不支持其他语言用于表示枚举的 enum 关键字,而是通过在 const 后跟一对圆括号定义一组常量的方式来实现枚举。

下面是一个常规的 Go 语言枚举表示法,其中定义了一系列整型常量:

const (
    Sunday = iota 
    Monday 
    Tuesday 
    Wednesday 
    Thursday 
    Friday 
    Saturday 
    numberOfDays
)

代码运行测试:

【Go语言】Go语言中的变量和常量,Go语言,golang,开发语言,后端

2.4 常量的作用域

和函数体外声明的变量一样,以大写字母开头的常量在包外可见(类似于 public 修饰的类属性),比如上面介绍的 PiSunday 等,而以小写字母开头的常量只能在包内访问(类似于通过 protected 修饰的类属性),比如 zeronumberOfDays 等。

函数体内声明的常量只能在函数体内生效。文章来源地址https://www.toymoban.com/news/detail-833616.html

到了这里,关于【Go语言】Go语言中的变量和常量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【30天熟悉Go语言】4 Go的变量、常量、运算符

    Go系列文章: GO开篇:手握Java走进Golang的世界 2 Go开发环境搭建、Hello World程序运行 3 Go编程规约和API包 Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html 变量相当于内存中一个数据存储空间的标识。 变量的使用分三步:声明、赋值、使用。 变量的声明 采用 var 变量名

    2024年02月07日
    浏览(36)
  • Rust 笔记:Rust 语言中的常量与变量

    Rust 笔记 Rust 语言中的常量与变量 作者 : 李俊才 (jcLee95):https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 邮箱 : 291148484@163.com 本文地址 :https://blog.csdn.net/qq_28550263/article/details/130875912 【介绍】:本文介绍 Rust 语言中的常量与变量。 上一节:《 上一节标题 》 | 下一节:《

    2024年02月06日
    浏览(48)
  • 初始Go语言2【标识符与关键字,操作符与表达式,变量、常量、字面量,变量作用域,注释与godoc】

      go变量、常量、自定义类型、包、函数的命名方式必须遵循以下规则: 首字符可以是任意Unicode字符或下划线。 首字符之外的部分可以是Unicode字符、下划线或数字。 名字的长度无限制。 理论上名字里可以有汉字,甚至可以全是汉字,但实际中不要这么做。 Go语言

    2023年04月09日
    浏览(35)
  • 【Golang入门教程】Go语言变量的初始化

    强烈推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站: 人工智能 推荐一个个人工作,日常中比较常用的人工智能工具,无需魔法,忍不住分享一下给大家。点击跳转到网站: 人工智能工具 引言 在Go语言中,变量

    2024年04月17日
    浏览(58)
  • 编程笔记 Golang基础 010 常量和变量

    在 Go 语言中,常量(Constant)是一个固定的值,在程序运行期间不可被修改。它们通常用来表示那些在整个程序执行过程中不会变化的数值或其他类型的数据。在 Go 语言中,变量是用来存储数据的容器。 在 Go 语言中,常量(Constant)是一个固定的值,在程序运行期间不可被

    2024年02月21日
    浏览(38)
  • 二、GoLang输出HelloWorld、基本数据类型、变量常量定义、基本类型转换

    go语言中,想要输出内容到控制台,package必须是main,包括方法名也必须是main, go语言输出的语法是 fmt 库。 Go语言的基本类型有: boolean:布尔类型 true / false string :字符串类型 数值型: int8:有符号8位整型(-128到127)长度 int16:有符号16位整型(-32768到32767)长度 int32:有

    2024年02月09日
    浏览(45)
  • 如何在Go中使用变量和常量

    变量 是一个需要掌握的重要编程概念。它们是符号,代表你在程序中使用的值。 本教程将介绍一些变量基础知识和在您创建的Go程序中使用它们的最佳实践。 用技术术语来说,变量是将一个存储位置赋值给一个与符号名称或标识符相关联的值。在计算机程序中,我们使用变

    2024年02月07日
    浏览(28)
  • Go类型全解:常量与变量大全!

    本篇文章深入探讨了 Go 语言中类型确定值、类型不确定值以及对应类型转换的知识点,后续充分解析了常量与变量及其高级用法,并举出丰富的案例。 关注公众号【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、

    2024年02月09日
    浏览(45)
  • 【Go基础】编译、变量、常量、基本数据类型、字符串

    面试题文档下链接点击这里免积分下载 go语言入门到精通点击这里免积分下载 使用 go build 1.在项目目录下执行 2.在其他路径下编译 go build ,需要再后面加上项目的路径(项目路径从GOPATH/src后开始写起,编译之后的可执行文件就保存再当前目录) 3.打包的时候自定义名字:

    2024年02月09日
    浏览(46)
  • 【Golang】go编程语言适合哪些项目开发?

    前言 在当今数字化时代,软件开发已成为各行各业的核心需求之一。 而选择适合的编程语言对于项目的成功开发至关重要。 本文将重点探讨Go编程语言适合哪些项目开发,以帮助读者在选择合适的编程语言时做出明智的决策。 Go 编程语言适合哪些项目开发? Go是由Google开发

    2024年02月04日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包