第一个GO程序
package main // 声明 main 包
import (
"fmt" // 导入 fmt 包,打印字符串是需要用到
)
func main() { // 声明 main 主函数
fmt.Println("Hello World!") // 打印 Hello World!
}
package(创建包)
Go语言以“包”作为管理单位,每个 Go 源文件必须先声明它所属的包,所以我们会看到每个 Go 源文件的开头都是一个 package 声明,格式如下:
package name
其中 package 是声明包名的关键字,name 为包的名字。
import(导入包)
在包声明之后,是 import 语句,用于导入程序中所依赖的包,导入的包名使用双引号""
包围,格式如下:
//第一种写法
import "fmt"
//第二种写法
import(
"fmt"
"os"
)
//第三种写法
import "fmt"
import "os"
//第四种写法
import "fmt"; import "os"
//第五种写法
import ("fmt"; "os")
可以通过使用包的别名来解决包名之间的名称冲突,设置包的别名,比如下面格式:
package main
import fm "fmt" // alias3
func main() {
fm.Println("hello, world")
}
函数
在Go语言中,所有函数都以关键字 func 开头的,定义格式如下所示:
func 函数名 (参数列表) (返回值列表){
函数体
}
格式说明如下:
- 函数名:由字母、数字、下画线
_
组成,其中,函数名的第一个字母不能为数字,并且,在同一个包内,函数名称不能重名。 - 参数列表:一个参数由参数变量和参数类型组成,例如
func foo( a int, b string )
。 - 返回值列表:可以是返回值类型列表,也可以是参数列表那样变量名与类型的组合,函数有返回值时,必须在函数体中使用 return 语句返回。
- 函数体:能够被重复调用的代码片段。
main 函数
main函数是Go语言程序的入口函数,也即程序启动后运行的第一个函数。main 函数只能声明在 main 包中,不能声明在其他包中,并且,一个 main 包中也必须有且仅有一个 main 函数。
http文件服务代码
【实例】HTTP 文件服务器是常见的 Web 服务之一。开发阶段为了测试,需要自行安装 Apache 或 Nginx 服务器,下载安装配置需要大量的时间。使用Go语言实现一个简单的 HTTP 服务器只需要几行代码,如下所示。
package main
import (
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir(".")))
http.ListenAndServe(":8080", nil)
}
下面是代码说明:
- 第 1 行,标记当前文件为 main 包,main 包也是 Go 程序的入口包。
- 第 3~5 行,导入 net/http 包,这个包的作用是 HTTP 的基础封装和访问。
- 第 7 行,程序执行的入口函数 main()。
- 第 8 行,使用 http.FileServer 文件服务器将当前目录作为根目录(
/
目录)的处理器,访问根目录,就会进入当前目录。 - 第 9 行,默认的 HTTP 服务侦听在本机 8080 端口。
把这个源码保存为 main.go(Go语言的源文件后缀就是.go
),安装Go语言的开发包(后续我们会讲解如何安装),在命令行输入如下命令:
$ go run main.go
在浏览器里输入http://127.0.0.1:8080
即可浏览文件,这些文件正是当前目录在HTTP服务器上的映射目录。