徐旭 的个人博客

【极简Golang入门】Hello World

Hello World

我们以传统的“hello world”案例开始吧。

package main

import "fmt"

func main() {
    fmt.Println("Hello World")
}

Go的源文件以 .go 为后缀名,这些文件名均由小写字母(推荐做法)组成且不包含空格和其他特殊字符,如 main.go 。如果文件名由多个部分组成,则使用下划线 _ 对它们进行分隔,如 main_test.go 。

Go是一门编译型语言,Go语言的工具链将源代码及其依赖转换成计算机的机器指令。Go语言提供的工具都通过一个单独的命令 go 调用,go 命令有一系列子命令。

$ go help
Go is a tool for managing Go source code.

Usage:

        go <command> [arguments]

The commands are:

        bug         start a bug report
        build       compile packages and dependencies
        clean       remove object files and cached files
        doc         show documentation for package or symbol
        env         print Go environment information
        fix         update packages to use new APIs
        fmt         gofmt (reformat) package sources
        generate    generate Go files by processing source
        get         download and install packages and dependencies
        install     compile and install packages and dependencies
        list        list packages or modules
        mod         module maintenance
        run         compile and run Go program
        test        test packages
        tool        run specified go tool
        version     print Go version
        vet         report likely mistakes in packages

...

我们通过 go run 命令编译 main.go 文件并且运行它。

$ go run main.go
Hello World

前面已经说过了GO语言是一门编译型语言,所以通过 go 工具同样可以编译生成二进制文件保存下来。

$ go build main.go

执行后,会在当前目录生成一个可执行文件 main (Windows平台是 main.exe)。我们可以直接在命令行运行它,就像执行 C/C++ 静态编译出来的可执行文件一样。

$ ./main
Hello World

Go语言的代码通过包组织,包机制类似于其它语言里的库或者模块。一个包由位于单个目录下的一个或多个 .go 源代码文件组成。每个源文件都以一条 package 声明语句开始,这个例子里就是 package main,表示该文件属于哪个包,紧跟着一系列导入 (import) 的包。

import "fmt"

接下来是这个文件的程序代码,在本例中是 main 函数。

main 包是一个比较特殊的包,它定义了一个独立可执行的程序,而不是一个库。在 main 包里的 main 函数是整个程序执行时的入口,就像 C/C++ 里一样。

Go的标准库提供了100多个包, fmt 包含有格式化输出、接收输入等方法。Println 函数是其中一个基础函数,可以打印以空格间隔的一个或多个值,并在最后添加一个换行符。

func 是Go语言的关键字之一,用于声明一个函数。一个函数的声明由 func 关键字、函数名、参数列表、返回值列表以及包含在大括号里的函数体组成。本例中的 main 函数参数列表和返回值都是空的,意思就是没有参数和返回值,无需像 C/C++ 中那样再手动添加 void,也不会存在隐式的默认参数。

Go语言不需要在语句或者声明的末尾添加分号,除非一行上有多条语句。但是,实际上编译器会帮我们添加分号。

Go语言在代码格式上强制统一,比如函数作左括号 { 必须另起一行,否则会编译报错。这样省去了很多口水仗,也统一了代码风格,提高了代码可读性。Go语言提供 gofmt (go fmt) 工具把代码格式化为标准格式。

gofmt  -w main.go 

该命令会格式化该源文件的代码并且将格式化后的代码覆盖原始内容,如果不加参数 -w 则只会打印格式化后的结果而不重写文件。在实际开发中,我们可以使用IDE或者编辑器插件自动格式化,无需每次执行命令来格式化代码。


标题:【极简Golang入门】Hello World
作者:Allenxuxu
地址:https://note.mogutou.xyz/articles/2019/08/04/1564914182581.html
Github: https://github.com/Allenxuxu

评论