使用go语言来开发一个goblog项目。

2.1.创建项目目录

一般我们会把项目放置于 $GOPATH/src 目录下。推荐的做法是将 GitHub 用户名作为命名空间

  1. $ cd $GOPATH/src
  2. $ mkdir -p github.com/junetalk/goblog
  3. $ cd github.com/junetalk/goblog

2.2.创建 main.go 文件

命令行 VSCode 编辑器:

  1. $ code .

右键新建文件:main.go

  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. )
  6. func handlerFunc(w http.ResponseWriter, r *http.Request) {
  7. fmt.Fprint(w, "<h1>Hello, 这里是 goblog</h1>")
  8. }
  9. func main() {
  10. http.HandleFunc("/", handlerFunc)
  11. http.ListenAndServe(":3000", nil)
  12. }

VSCode 的内置终端默认打开的就是项目所在目录,我们可以使用以下命令打印当前目录进行确认:

  1. $ pwd

接下来在内置终端里运行我们 go 程序:

  1. $ go run main.go

运行成功后,此时浏览器打开 localhost:3000/ 即可看到:

  1. Hello, 这里是 goblog

在 VSCode 的内置终端内,使用快捷键 Ctrl+C 可关闭以上 go 程序的运行。

2.3.代码版本

日常编程中,所有代码都应该使用 Git 版本控制器来管理。接下来一起为项目代码新增版本控制:

  1. $ git init .
  2. $ git add .
  3. $ git commit -m "初始化"

2.4.代码说明

main.go

  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. )
  6. func handlerFunc(w http.ResponseWriter, r *http.Request) {
  7. fmt.Fprint(w, "<h1>Hello, 这里是 goblog</h1>")
  8. }
  9. func main() {
  10. http.HandleFunc("/", handlerFunc)
  11. http.ListenAndServe(":3000", nil)
  12. }

1、包名
每一段 Go 程序都 必须 属于一个包。而 main 包在 Go 程序中有特殊的位置。

  • 如果一段程序是属于 main 包的,那么当执行 go install 或者 go run 时就会将其生成二进制文件,当执行这个文件时,就会调用 main 函数。
  • main 包里的 main 函数相当于应用程序的入口。要想生成可执行的二进制文件,必须把代码写在 main 包里,而且其中必须包含一个 main 函数。
  • 存放 main 函数的文件名称不一定是 main.go,也可以是任何其他合规的 go 文件名称,例如 app.go、index.go。一般推荐使用 main.go,因为直观。

2、import
我们使用 import 关键词用以引入程序所需的 Go 包。在 goblog 中,我们引入了两个 Go 标准库的包
3、Go标准库
Go 语言标准库是由 Go 官方团队维护,包含在 Go 语言安装包中的 Go 包。
对于 Go 程序员而言,标准库与语言本身同样重要,它好比一个百宝箱,能为各种常见的任务提供解决方案。
以下是 Go 标准库常见的包以及功能介绍:

标准库包名 功能简介
bufio 带缓冲的 I/O 操作
bytes 实现字节操作
container 封装堆、列表和环形列表等容器
crypto 加密算法
database 数据库驱动和接口
debug 各种调试文件格式访问及调试功能
encoding 常见算法如 JSON、XML、Base64 等
flag 命令行解析
fmt 格式化操作
go Go 语言的词法、语法树、类型等。可通过这个包进行代码信息提取和修改
html HTML 转义及模板系统
image 常见图形格式的访问及生成
io 实现 I/O 原始访问接口及访问封装
math 数学库
net 网络库,支持 Socket、HTTP、邮件、RPC、SMTP 等
os 操作系统平台不依赖平台操作封装
path 兼容各操作系统的路径操作实用函数
plugin Go 1.7 加入的插件系统。支持将代码编译为插件,按需加载
reflect 语言反射支持。可以动态获得代码中的类型信息,获取和修改变量的值
regexp 正则表达式封装
runtime 运行时接口
sort 排序接口
strings 字符串转换、解析及实用函数
time 时间接口
text 文本模板及 Token 词法器