使用go编写一个先进先出的队列,并完成帮助文档的编写、浏览、打包安装

简介: 使用go编写一个先进先出的队列,并完成帮助文档的编写、浏览、打包安装

胡说八道

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。

现代计算机技术的发展已经快打破英特尔戈登·摩尔提出的摩尔定律了。计算机硬件的发展速度已经远远赶不上软件技术的发展,意味着在现有硬件基础上,高效的性能才是王道。像Go、Rust等这样的语言才是未来的主导语言。

在开发人员眼中,写出完美的API很容易,可写好文档却不容易,还有各种示例程序。然而Go、Rust等这类的语言本省就带了快捷编写文档的命令。用起来也相当舒服。接下来,通过实例来演示一下Go的API文档编写。

新建工程

|--src
|----queue
|    |   queue.go
|    |   queue_test.go
|------queueentry
|      |   main.go

queue.go

编写的重点在每个类型和方法上边的注释上,正是有了编写的这些注释,才有了文档中的说明,so, 一定要写好注释!

package queue

// 先进先出队列

type Queue []int

// 向队列中添加一个元素
//  e.g. q.Push(9)

func (q *Queue) Push (v int) {
    *q = append(*q, v)
}
// 从队列中删除第一个元素
func (q *Queue) Pop () int {
    head := (*q)[0]
    *q = (*q)[1:]
    return head
}
// 如果队列为空,则返回true
func (q *Queue) IsEmpty () bool {
    return len(*q) == 0
}

queue_test.go

go还可以给写的库或者包写示例。我的IDE是GoLand, 你只要在与queue.go这个文件同目录构建一个queue_test.go文件,在文件中键入 func Ex..之后,编辑器会自动弹出提示,让你选择实现哪一个方法的示例的方法名。还是很贴心的。如果要写出示例程序执行的结果,只需要在示例程序中用// Output写出执行结果即可。

package queue

import "fmt"

func ExampleQueue_Pop() {
    q := Queue{1}
    q.Pop()

    // Output
    // 1
}
func ExampleQueue_Push() {
    q := Queue{1}
    q.Push(2)
}
func ExampleQueue_IsEmpty()  {
    q := Queue{1}
    if !q.IsEmpty() {
        fmt.Println("empty")
    }
    // Output
    // empty
}

暂停......

最为一个库, 我们肯定要使用,所以,我们引用queue.go,将其打包为一个可执行文件,就当自个测试了。

main.go

相信你能看懂。

package queueentry

import (
    "fmt"
    "queue"
)
func main() {
    q := queue.Queue{1}
    q.Push(2)
    fmt.Println(q[1])
}

在线看文档

go为我们提供了go doc 命令和 godoc两个命令查看文档,两个命令的使用方式也是不同的。如下是两个命令的大致使用。

go doc

$ go doc fmt.Println
func Println(a ...interface{}) (n int, err error)
    Println formats using the default formats for its operands and writes to
    standard output. Spaces are always added between operands and a newline is
    appended. It returns the number of bytes written and any write error
    encountered.

godoc

$ pwd
/gopath/to/src/queue/
$ godoc -http 127.0.0.1:8089
... # 启动了一个web服务器,用浏览器即可打开。

在此,为了方便查看其它库的API,我们使用godoc命令格式。

执行后打开浏览器,会进入go提供的默认的网页。image
点击顶部的Packages,该页面包含了Go的标准库,和你刚才写了注释的库。
image
在页面搜索queue,定位到该词的位置;
image
点击该文字,进入该库的说明文档;
image
至此,你的API的说明文档可以用了,可以把你的库交给你的小伙伴了。

打包

$ pwd
/gopath/to/src/queue/entryqueue/
go build main.go
# 生成entryqueue.exe

添加到bin

$ pwd
/gopath/to/src/queue/entryqueue/
go install

测试

$ entryqueue
2 # 测试成功

乱种取整

Go 为我们提供了一整套的编写文档的工具,不像java、JavaScript等语言都需要安全插件并且需要有特定的格式,操作很是麻烦。

目录
相关文章
|
13天前
|
关系型数据库 Go 网络安全
go语言中PostgreSQL驱动安装
【11月更文挑战第2天】
48 5
|
13天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
29 4
|
14天前
|
SQL 关系型数据库 MySQL
go语言中安装数据库驱动
【11月更文挑战第1天】
36 5
|
5月前
|
Go
go-micro 安装
go-micro 安装
40 3
|
1月前
|
Unix Linux Go
Linux 使用Yum安装Go和配置环境
Linux 使用Yum安装Go和配置环境
|
3月前
|
Ubuntu Go 开发工具
Unbuntu 一键安装制定版本的Go环境
该文章提供了在Ubuntu系统上一键安装指定版本的Go语言环境的详细步骤,包括删除旧版本Go、下载并解压新版本Go到指定目录、配置Go环境变量,以及安装其他必要的开发工具。
67 2
|
2月前
|
消息中间件 NoSQL Go
PHP转Go系列 | ThinkPHP与Gin框架之Redis延时消息队列技术实践
【9月更文挑战第7天】在从 PHP 的 ThinkPHP 框架迁移到 Go 的 Gin 框架时,涉及 Redis 延时消息队列的技术实践主要包括:理解延时消息队列概念,其能在特定时间处理消息,适用于定时任务等场景;在 ThinkPHP 中使用 Redis 实现延时队列;在 Gin 中结合 Go 的 Redis 客户端库实现类似功能;Go 具有更高性能和简洁性,适合处理大量消息。迁移过程中需考虑业务需求及系统稳定性。
|
3月前
|
存储 Ubuntu Go
在Ubuntu 16.04上安装Go 1.6的方法
在Ubuntu 16.04上安装Go 1.6的方法
47 1
|
3月前
|
存储 Ubuntu Go
在Ubuntu 18.04上安装Go的方法
在Ubuntu 18.04上安装Go的方法
57 1
|
3月前
|
存储 Ubuntu Linux
在Ubuntu 14.04上安装Go 1.6的方法
在Ubuntu 14.04上安装Go 1.6的方法
53 1
下一篇
无影云桌面