从零学 Go 语言:常量与别名
前文回顾
前面一篇文章主要介绍了 Go 语言中的指针基本概念与相关用法。Go 语言限制了指针类型的偏移和运算能力,使得指针类型具备了指针高效访问的特性,但又不会发生指针偏移,避免了非法修改敏感数据的问题。本文将会介绍常量与别名的基本使用,以及补充介绍 Go 编译工具相关的内容,作为系列文章,在前面的文章中漏掉了介绍,这里我们补充介绍一下。
常量与别名
相对于变量运行时可变的特点,常量的值在声明之后是不允许变化。通过const
关键字可以声明常量,声明常量的样式与声明变量非常相似,如下例子所示:
const str string = "Go is Good!"
上述代码中声明了一个类型为 string
的 str
常量,同样可以使用 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求索
- 点赞
- 收藏
- 关注作者
评论(0)