引言
接着我们这本小册子的内容,今天我们手动实现一个hello world输出, 这是编程的惯例,用于测验环境搭建是否简单上手,或者是否准备好了基本的条件。
学习时间
垃圾回收
有些变量,在创建时,有一个容易定义的生活。例如,函数的本地变量在函数退出时消失。在其他情况下,就不那么明显了——至少对编译器来说是这样。
例如,函数返回的变量或其他变量和对象引用的变量的生存期可能很难确定。如果没有垃圾收集,则在开发人员知道不需要这些变量的时候,由开发人员释放与这些变量相关的内存。
怎么做?在C语言中,你会直接使用 free(str) 释放变量。
带有垃圾收集器的语言(如Ruby、Python、Java、JavaScript、c#、Go)能够跟踪这些垃圾,并在它们不再被使用时释放它们。垃圾收集增加了开销,但它也消除了许多破坏性的bug。
代码时间
让我们通过创建一个简单的程序并学习如何编译和执行它来开始我们的旅程。打开你最喜爱的文本编辑器,并编写以下代码:
package mainfunc main() { println("Hello World!")}
保存上述文件为 main.go。现在,你可以把它保存在任何你想要的地方。
接下来,打开shell/命令提示符,并将目录切换到保存文件的位置。类似于
cd ~/code
这样就切换到工作目录了。然后执行新建的go程序文件:
go run main.go
如果一切正常就会看到命令行的输出了 Hello World!。这就证明环境什么的都好了,可以开始畅快地使用了。
在开发时,可以使用go run或go build。部署代码时,我们会把代码执行 go build 编译为二进制文件放在服务器执行。
说说main函数
就行C语言中,main函数是一切程序的入口,go语言也是一样的。上一节中的代码希望大家可以理解, 我们使用内置函数 println 输出了一个字符串,仅此而已。go语言唯一的入口就是在 main 包下的 main 函数。
关于package我们下一节讲解。我们把目光集中在main函数上,我们编写代码的时候,为了图方便省事, 直接在main函数内写代码了,没有拆分,数据结构体等等这些。
举一些例子:
package mainimport "fmt"func main() {var a [5]intfmt.Println("emp:", a)a[4] = 100fmt.Println("set:", a)fmt.Println("get:", a[4])fmt.Println("len:", len(a))}
如果你愿意,你可以更改代码并更改包名。通过go Run运行代码,你大概率会得到一个错误。
然后,那就名称更改为main,但使用别的函数名。你应该会看到一个不同的错误消息。尝试做同样的更改,但使用go build代替。
注意,代码是需要编译的,只是没有运行它的入口点。例如,在构建库(library)时,这是非常正常的。
写在最后
本文初步介绍了垃圾回收的必要性,还有main包,main函数的概念。
Happy coding :-)
我是@程序员小助手,持续分享编程知识,欢迎关注。