# 1.5 运行go代码
现在,让我们通过创建一个简单的示例,开启我们的go学习旅程,并学习如何编译和执行go程序。打开你最喜欢的文本编辑器,输入以下代
```go
package main
func main() {
println("it's over 9000!")
}
```
将文件保存为`main.go`,对于简单的例子,我们不需要深入到go的工作空间中。
接下来,打开一个命令行终端,进入`main.go`文件所在的目录。对我来说,我是输入了`cd ~/code`。
最后,键入以下命令运行这段程序:
`go run main.go`
如果程序正常运行,你应该会看到输出`it's over 9000!`。
但这是如何实现编译呢?为了方便起见,`go run`会先编译然后再运行你的代码,它会在一个临时的目录下编译这段代码,然后执行,最后自动清除生成的临时文件。通过运行以下命令你可以看见这个临时文件的位置:
`go run --work main.go`
如果你只想编译代码,使用`go build`:
`go build main.go`
这会生成一个可执行文件`main`,你可以直接运行它。在linux/osx中,不要忘记在可执行文件前面加上点和反斜杠,所以你需要输入`./main`运行程序。
## 1.5.1 main
希望你能理解我们刚刚执行的代码,我们定义了一个函数,并调用了内置函数`println`输出一个字符串。难道仅因为这里只有一个选择,所以`go run`知道执行什么吗?不是的,在go语言中,程序的入口是`main`包中的`main`函数。
我们在后面的章节中会专门介绍包的相关内容,现在,我们暂时专注于理解go语言的基础知识,所以我们一直在`main`包中编写代码。
如果你愿意,你也可以改变代码并改变包的名字,并使用`go run`去执行,你会得到一个错误信息。然后,将包名改成`main`,但是函数名不叫`main`,再次运行代码,你会得到一个不同的错误信息。使用`go build`进行相同的操作,注意编译代码时,这里没有运行代码的入口点。这是很正常的,例如当你编译一个库时。
## 链接
- 关于本书
- 引言
- 准备工作
- 安装开发环境
- 开始使用Go
- 创建一个Go模块
- 第1章:基础知识
- 1.1 编译
- 1.2 静态类型
- 1.3 类c语法
- 1.4 垃圾回收
- 1.5 运行go代码
- 1.6 导入包
- 1.7 变量和声明
- 1.8 函数声明
- 1.9 继续之前
- 第2章:语法学习
- 2.1 声明和初始化
- 2.2 结构体上的函数
- 2.3 构造函数
- 2.4 new
- 2.5 结构体字段
- 2.6 组合
- 2.7 指针类型和值类型
- 2.8 继续之前
- 第3章:复杂类型
- 3.1 数组
- 3.2 切片
- 3.3 映射
- 3.4 指针类型和值类型
- 3.5 继续之前
- 第4章:面向对象
- 4.1 包
- 4.2 接口
- 4.3 继续之前
- 第5章:综合知识
- 5.1 错误处理
- 5.2 defer
- 5.3 go语言风格
- 5.4 初始化的if
- 5.5 空接口和转换
- 5.6 字符串和字节数组
- 5.7 函数类型
- 5.8 内存分配
- 第6章:高并发
- 6.1 go协程
- 6.2 同步
- 6.3 通道
- 6.4 继续之前
- 第7章:工具库
- 7.1 类型转换
- 7.2 时间操作
- 第8章:程序测试
- 单元测试
- 性能测试
- 第9章:简单实例
- 内存分配
- 第10章:项目实战
- 结论
- 附录