我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【Go语言】【3】GO语言常量

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【Go语言】【3】GO语言常量

  通常情况下语言入门前会讲一堆背景和特性,目的是为了能让学习者对该语言有一个大概的认识,但这里我想直接进入细节,不是因为任性,而是因为常量是编程语言最基本的组成元素,这与语言背景无关。

一、字面常量

在说明字面常量之前先说一下魔鬼数字,哪么什么是魔鬼数字呢?

func calculatePrice(price float32) float32{

  return price * 0.8

}

这个方法中的0.8就是魔鬼数字(没有具体含义),它导致代码难以理解,这里的0.8表示折扣的意思,为了清晰起见,上面的代码可以如下修改:

const discount float64 = 0.8 // 定义折扣常量

func calculatePrice(price float32) float32{ // 计算折扣后的价格

  return price * discount

}


这个例子中的魔鬼数字就是字面常量的一种,除了浮点型之外,还可以有整型、布尔型、字符串型等字面常面,如:

3.1415926535897932 // 浮点类型的字面常量

-12           //整数类型的字面常量

true          //布尔类型的字面常量

"ok"          //字符串类型的字面常量

当然GO还有复数常量,如3+2i


二、常量

和其它语言(C、C++、Java等)类似,由const关键字修饰,例如:

const PI float64 = 3.1415926535897932

const EluerE float64 = 2.718281828459045

const value int = -12

const width int = 36

const flag bool = false

const isRead bool = true

const str string = "ok"

const bookName string = "Go language"

const rect complex64 = 3 + 2i

const area complex64 = 3.1415 + 3.6i


每个常量定义的形式都必须写成const constName constType = constValue这种形式吗?我们是否能省略掉常量类型?当然可以,要知道GO语言是最懂程序员的哟 :)

const PI = 3.1415926535897932

const EluerE = 2.718281828459045

const value = -12

const width = 36

const flag = false

const isRead = true

const str = "ok"

const bookName = "Go language"

const rect = 3 + 2i

const area = 3.1415 + 3.6i


每个常量定义都要写一次const,是否能省略掉const?这个是不可以的,但可以把上面的定义写成如下形式:

const (

    PI = 3.1415926535897932

    EluerE = 2.718281828459045

    value = -12

    width = 36

    flag = false

    isRead = true

    str = "ok"

    bookName = "Go language"

    rect = 3 + 2i

    area = 3.1415 + 3.6i

)

这样写虽然少写了const,但代码行数并没有减少,所以也可以缩写为:

const (

   PI, EluerE, value, width, flag, isRead, str, bookName, rect, area = 3.1415926535897932, 2.718281828459045, -12, 36, false, true, "ok", "Go language", 3 + 2i, 3.1415 + 3.6i

)


三、常量特点说明

1、没有private、protected、public修改符

有过Java开发经验的读者都清楚private、protected、public修饰符,但GO对你说sorry。GO是怎么区分常量/变量是对内还是对外的呢?

答案是常量名的首字母是否大写,若首字母大写则是对外的,首字母小写则是对内的,上例中的PI、EluerE就相当于public的,而value、width、flag、isRead等就相当于private


2、类型放在常量名的后面

有过Java开发经验的读者都比较熟悉public int value = 10这种定义方式,类型放在变量名value的前面,但GO恰恰相反,偏偏把类型放在后面,例如:const PI float64 = 3.1415926535897932


3、常量定义语句不用分号结束

在Java或C等语言中,一般都是这样定义:const str string = "ok";但在GO中懒得把分号(;)都省略了。刚开始写GO代码很不习惯,总是在后面追加一个分号,然而一保存Sublime text很贴心地帮我省略掉了


4、常量定义的右值可以是一个编译期运算的常量表达式

例如:

const algorithm = 255 >> 2

这点与其它语言类似,也容易理解,若右值是运行期才能得到的结果表达式

const Port = os.GetEnv("Port")

那么在编译期并不能确定该值,会出现编译错误


四、预定义常量iota

iota是GO所特有的,它在每个const出现时被重置为0,下一个const出现之前,每出现一次iota,其所代表的数字自动增加1,那么怎么理解这句话呢?

【例1】:我们定义一个星期的枚举常量

const (

    Sunday    = iota  //星期天

    Monday    = iota  //星期一

    Tuesday   = iota   //星期二

    Wednesday = iota   //星期三

    Thursday  = iota   //星期四

    Friday    = iota  //星期五

    Saturday  = iota   //星期六

)

当每个const出现时iota被重置为0,所以这里的Sunday值为0,同时后面没有再出现const,所以第二个iota自动加1,Monday的值为1,依次类推,Saturday的值为6

wKiom1TwdevTXOhwAANqh8Fl1rs906.jpg

值得一提的是,上面的写法可以简写如下:

const (

    Sunday = iota  //星期天

    Monday       //星期一 

    Tuesday      //星期二

    Wednesday     //星期三

    Thursday     //星期四

    Friday       //星期五

    Saturday     //星期六

)


【例2】:修改一下这个枚举定义

const (

    Sunday  = iota //星期天,赋值为0

    Monday  = iota //星期一

    Tuesday = iota //星期二

)

const (

    Wednesday = iota //星期三,赋值为0

    Thursday  = iota //星期四

    Friday    = iota //星期五

    Saturday  = iota //星期六

)

当每个const出现时iota被重置为0,所以这里的Sunday,Monday没有const出现,其值自动加1,所以Monday为1,同理Tuesday为2; 

由于Wednesday之前出现了const,所以Wednesday的值被重置为0,而Thursday、Friday、Saturday后面再没有const出现,所以Thursday、Friday、Saturday值自动加1,依次为1、2、3

wKiom1TweCWza6VyAAMbyuQDAOo006.jpg


【编后话】:

开始接触GO,感觉它就是一个大杂烩,里面即有C语言的影子,也有Java语言的影子,也有JavaScript脚本的影子,同时还有Pascal语言的痕迹,但使用使用着感觉这符合人的正常思维,代码想怎么写就怎么写,无论怎么写好像都符合GO的语法。借用知乎用户的话讲:GO语言是一门看似简单实际并不简单,貌似外表丑陋实则另有考究的语言。



免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【Go语言】【3】GO语言常量

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【Go语言】【3】GO语言常量

通常情况下语言入门前会讲一堆背景和特性,目的是为了能让学习者对该语言有一个大概的认识,但这里我想直接进入细节,不是因为任性,而是因为常量是编程语言最基本的组成元素,这与语言背景无关。一、字面常量在说明字面常量之前先说一下魔鬼数字,哪么什么是
2023-01-31

Go语言3

strings 包实现了用于操作字符串的简单函数。HasPrefixstrings.HasPrefix(s string, prefix string) bool判断字符串s是否以prefix开头HasSuffixstrings.HasSu
2023-01-31

Go 语言的变量与常量

go 语言的变量声明和大多数语言类似,通过 var 关键字声明变量,只是 go 语言作为静态类型语言,声明变量时需要指定其类型。

go语言常量有哪些

这篇“go语言常量有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言常量有哪些”文章吧。go语言常量有5种:布尔型
2023-07-05

Go 语言的变量与常量的概念

本篇内容主要讲解“Go 语言的变量与常量的概念”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go 语言的变量与常量的概念”吧!变量go 语言的变量声明和大多数语言类似,通过 var 关键字声明变
2023-06-15

Go语言如何定义一个常量

Go语言中,常量表示值在程序执行期间保持不变。定义常量有两种类型:无类型和类型化。无类型常量不指定类型,编译器会根据值推断;类型化常量明确指定类型。定义语法分别为:const常量名=常量值const常量名类型=常量值常量规则包括:常量名必须是有效标识符常量值必须在编译时即可确定常量一旦定义就不能修改常量用途广泛,例如存储数学常数、应用程序配置或枚举值,提高代码可读性、可维护性和纠错能力。此外,Go语言还提供了iota枚举,允许创建一组递增的整型常量。iota从0开始,每声明一个常量增加1。
Go语言如何定义一个常量
2024-04-02

Go语言如何返回常量的值

Go语言不允许直接返回常量值,因为常量不可变且无法通过指针访问。替代方法包括:复制常量值并将其返回。使用常量表达式(仅包含常量值和表达式)。注意事项:复制值时,避免意外修改常量。常量表达式仅限于使用常量值或表达式,不能包含变量或非常量值。以下示例演示如何返回各种类型的常量值:整型常量:GetMyIntConst()字符串常量:GetMyStringConst()浮点常量:GetMyFloatConst()常量表达式:DoubleMyConst()
Go语言如何返回常量的值
2024-04-02

Go语言的变量与常量怎么定义

这篇文章主要介绍“Go语言的变量与常量怎么定义”,在日常操作中,相信很多人在Go语言的变量与常量怎么定义问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言的变量与常量怎么定义”的疑惑有所帮助!接下来,请跟
2023-07-05

go语言是易语言吗

go语言不是易语言,两者是不同的编程语言。go语言(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。易语言(EPL)是一门以中文作为程序代码编程语言,其以“易”著称,创始人为吴涛;易语言早期版本的名字为E语言,也通常代指与之对应的集成开发环境。
2023-05-14

Go语言的常用基础

Go语言有一些让人影响深刻的核心特性核心特性,比如:以消息传递模式的并发、独特的_符号、defer 、函数和方法、值传递等等

Go 语言常见踩坑记

For循环在我们日常编码中可能用的很多。在很多业务场景中我们都需要用for循环处理。但golang中的for循环在使用上需要注意一些问题,大家可否遇到。
Go语言编码2024-12-02

go语言是不是易语言

本篇内容介绍了“go语言是不是易语言”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!go语言不是易语言,两者是不同的编程语言。go语言(又称G
2023-07-04

go语言是编程语言吗

go语言是编程语言。go语言又称Golang,是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go语言的推出,旨在不损失应用程序性能的情况下降低代码的复杂性,具有“部署简单、并发性好、语言设计良好、执行性能好”等优势。
2022-11-28

go语言更像哪种语言

Go语言在某种程度上更像C语言。这是因为Go语言的语法和C语言非常相似,特别是对于变量声明、循环和条件语句等方面。此外,Go语言也继承了C语言的指针概念,允许直接操作内存,这使得它与C语言之间的转换较为容易。然而,Go语言也有一些其他语言的
2023-10-12

go语言是后端语言吗

go语言是后端语言。go语言是服务端的编程语言,其方向主要是后端。使用Go语言做后端开发的原因:1、在语言层面具有语法简洁、执行效率高(底层语言)的特点;2、Go语言是主打并发、为并发而生的,其出发点即是瞄准大数据+云计算时代背景下的高并发、分布式应用场景;3、Go语言可以在不同平台直接编译生成可执行程序,基础内存占用很少。
2023-05-14

go语言是第几代语言

go语言是第三代语言,正式发布于2009年,设计目标是提供一种简洁、高效、并发安全的编程语言,能够有效地开发大型软件项目,受到了C和C++的影响,但摒弃了一些复杂的语法和特性,以提高开发效率和代码可读性。本文的操作环境:Windows10系
2023-07-13

go语言借鉴哪些语言

go语言借鉴了C语言、Java语言、Python语言和CSP并发模型。详细介绍:1、Go语言借鉴了C语言的底层控制能力和高性能特点;2、Go语言借鉴了Java语言的垃圾回收机制,使得Go语言的内存管理更加高效;3、Go语言借鉴了Python
2023-07-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录