从零学 Go 语言:常量与别名

举报
aoho 发表于 2021/08/03 22:27:31 2021/08/03
【摘要】 前文回顾前面一篇文章主要介绍了 Go 语言中的指针基本概念与相关用法。Go 语言限制了指针类型的偏移和运算能力,使得指针类型具备了指针高效访问的特性,但又不会发生指针偏移,避免了非法修改敏感数据的问题。本文将会介绍常量与别名的基本使用,以及补充介绍 Go 编译工具相关的内容,作为系列文章,在前面的文章中漏掉了介绍,这里我们补充介绍一下。 常量与别名相对于变量运行时可变的特点,常量的值在声明...

前文回顾

前面一篇文章主要介绍了 Go 语言中的指针基本概念与相关用法。Go 语言限制了指针类型的偏移和运算能力,使得指针类型具备了指针高效访问的特性,但又不会发生指针偏移,避免了非法修改敏感数据的问题。本文将会介绍常量与别名的基本使用,以及补充介绍 Go 编译工具相关的内容,作为系列文章,在前面的文章中漏掉了介绍,这里我们补充介绍一下。

常量与别名

相对于变量运行时可变的特点,常量的值在声明之后是不允许变化。通过const关键字可以声明常量,声明常量的样式与声明变量非常相似,如下例子所示:

const str string = "Go is Good!"

上述代码中声明了一个类型为 stringstr 常量,同样可以使用 Golang 的类型推导省略常量声明时的类型和同时声明多个常量,如下例子所示:

const name = "Go is Good!"
const (
	surname = "王"
	personalName = "小二"
)

Golang 中同样提供了类型别名的语法特性。类型别名是类型的另一个名称,本质上它与原类型是属于同一个类型的,它相当于原类型的一个别称。定义一个类型别名的样式如下:

type name = T

与之相对的,类型定义的样式如下:

type name T

类型定义将会创建一种新的类型,新建的类型将具备原类型的特性。我们通过以下例子理解类型别名和类型定义之间的区别:

package main

import "fmt"

type aliasInt = int // 定义一个类型别名
type myInt int // 定义一个新的类型

func main()  {

	var alias aliasInt
	fmt.Printf("alias value is %v, type is %T\n", alias, alias)

	var myint myInt
	fmt.Printf("myint value is %v, type is %T\n", myint, myint)
}

输出的结果为:

alias value is 0, type is int
myint value is 0, type is main.myInt

从输出结果中,我们可以看出 int 的类型别名 aliasInt 的类型还是 int,而重新定义的 myInt 属于新的类型,但是它的值和 aliasInt 一样都为 0。

编译工具

为了使我们的程序能够测试运行起来,我们需要掌握一些简单 Golang 编译工具和命令。

go run

go run 命令将直接编译和执行源码中的 main 函数,但是并不会留下任何可执行文件(可执行文件被放在临时文件中被执行,之后将被自动删除)。可以在 go run 命令后添加参数,这部分参数会作为代码可以接受的命令行输入提供给程序,这部分语法我们将在接下来的章节进行演示。

来到我们 HelloGo.go 文件的目录下,执行如下命令:

go run HelloGo.go

就能够愉快地启动我们的聊天机器人并与其进行聊天。

Enter 'EOF' to shut down: 
你好
AI: 你陪我玩我就好啦
今天天气真好
AI: 是很好。没太阳

go build

通过 Golang 的并发特性对代码进行函数粒度的并发编译,Golang 的编译速度非常快。go build 命令会将源码编译为可执行文件,默认将编译该目录下的所有的源码。也可以在命令后添加多个文件名, go build 命令将编译这些源码,输出可执行文件。

同样来到我们 HelloGo.go 文件的目录下,执行如下命令:

go build -o HelloGo

或者

go build HelloGo.go

都将在当前目录下生成一个 HelloGo 的可执行文件,直接运行,也可以与我们的聊天机器人谈笑风生。

小结

本文主要介绍了 Go 语言中的常量与别名,常量的值在声明之后是不允许变化。通过const关键字可以声明常量,声明常量的样式与声明变量非常相似。除此之外,还补充介绍了 Go 编译工具的相关命令。

下面一篇文章,我们将继续介绍基础语法中的分支和循环控制,这是很多语言都有的基本功能。

阅读最新文章,关注公众号:aoho求索

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。