golang 解析word文档操作
知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《golang 解析word文档操作》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!
baliance/gooxml
gooxml是可以对整个office document提供支持的golang库,功能很强大,这里简单给出对word文档的读取案例
安装
go get baliance.com/gooxml/
go build -i baliance.com/gooxml/…
解析word代码
package main import ( "fmt" "log" "baliance.com/gooxml/document" ) func main() { doc, err := document.Open("ml.docx") if err != nil { log.Fatalf("error opening document: %s", err) } //doc.Paragraphs()得到包含文档所有的段落的切片 for i, para := range doc.Paragraphs() { //run为每个段落相同格式的文字组成的片段 fmt.Println("-----------第", i, "段-------------") for j, run := range para.Runs() { fmt.Print("\t-----------第", j, "格式片段-------------") fmt.Print(run.Text()) } fmt.Println() } }
举个例子:
下图为word文档的截图,总共四行,第一行有三种字体
运行代码结果如下:
补充:golang go doc 与 godoc 文档生成查看
Go语言项目十分重视代码的文档,在软件设计中,文档对于软件的可维护和易使用具有重大的影响。因此,文档必须是书写良好并准确的,与此同时它还需要易于书写和维护。
Go语言注释
Go语言中注释一般分为两种,分别是单行注释和多行注释
单行注释是以 // 开头的注释,可以出现在任何地方。
多行注释也叫块注释,以 /* 开头,以 */ 结尾,不可以嵌套使用,一般用于包的文档描述或注释成块的代码片段。
每一个 package 都应该有相关注释,在 package 语句之前的注释内容将被默认认为是这个包的文档, package 的注释应该提供一些相关信息并对整体功能做简要的介绍。
在日常开发过程中,可以使用go doc和godoc命令生成代码的文档。
go doc
go doc 命令打印Go语言程序实体上的文档。可以使用参数来指定程序实体的标识符。
Go语言程序实体是指变量、常量、函数、结构体以及接口。
程序实体标识符就是程序实体的名称。
go doc 用法
go doc [-u] [-c] [package|[package.]symbol[.methodOrField]]
可用的标识:
标识 | 说明 |
---|---|
-all | 显示所有文档 |
-c | 匹配程序实体时,大小写敏感 |
-cmd | 将命令(main包)视为常规程序包,如果要显示main包的doc,请指定这个标识 |
-src | 显示完整源代码 |
-u | 显示未导出的程序实体 |
示例
输出指定 package ,指定类型,指定方法的注释
$ go doc sync.WaitGroup.Add
输出指定 package ,指定类型的所有程序实体,包括未导出的
$ go doc -u -all sync.WaitGroup
输出指定 package 的所有程序实体(非所有详细注释)
$ go doc -u sync
godoc
godoc命令主要用于在无法联网的环境下,以web形式,查看Go语言标准库和项目依赖库的文档。
在 go 1.12 之后的版本中,godoc不再做为go编译器的一部分存在。依然可以通过go get命令安装:
go get -u -v golang.org/x/tools/cmd/godoc
国内的安装方法
mkdir -p $GOPATH/src/golang.org/x cd $GOPATH/src/golang.org/x git clone https://github.com/golang/tools.git cd tools/cmd/godoc go install ls -alh $GOPATH/bin
通过终端查看文档
go doc命令
$ go doc help
usage: go doc [-u] [-c] [package|[package.]symbol[.method]]
可以看到,go doc接受的参数,可以是包名,也可以是包里的结构、方法等,默认为显示当前目录下的文档。
查看系统log包信息
linux@ubuntu:/usr/local/go/src/log$ go doc package log // import "log" Package log implements a simple logging package. It defines a type, Logger, with methods for formatting output. It also has a predefined 'standard' Logger accessible through helper functions Print[f|ln], Fatal[f|ln], and Panic[f|ln], which are easier to use than creating a Logger manually. That logger writes to standard error and prints the date and time of each logged message. Every log message is output on a separate line: if the message being printed does not end in a newline, the logger will add one. The Fatal functions call os.Exit(1) after writing the log message. The Panic functions call panic after writing the log message. const Ldate = 1 <p>列出当前包中方法、结构、常量等</p> <p>查看系统log包中Fatal方法</p> <pre class="brush:plain;"> linux@ubuntu:/usr/local/go/src/log$ go doc log.Fatal func Fatal(v ...interface{}) Fatal is equivalent to Print() followed by a call to os.Exit(1).
列出当前函数和注释说明
查看系统log包中Logger结构
linux@ubuntu:/usr/local/go/src/log$ go doc Logger type Logger struct { // Has unexported fields. } A Logger represents an active logging object that generates lines of output to an io.Writer. Each logging operation makes a single call to the Writer's Write method. A Logger can be used simultaneously from multiple goroutines; it guarantees to serialize access to the Writer. func New(out io.Writer, prefix string, flag int) *Logger func (l *Logger) Fatal(v ...interface{}) func (l *Logger) Fatalf(format string, v ...interface{}) func (l *Logger) Fatalln(v ...interface{}) func (l *Logger) Flags() int func (l *Logger) Output(calldepth int, s string) error func (l *Logger) Panic(v ...interface{}) func (l *Logger) Panicf(format string, v ...interface{}) func (l *Logger) Panicln(v ...interface{}) func (l *Logger) Prefix() string func (l *Logger) Print(v ...interface{}) func (l *Logger) Printf(format string, v ...interface{}) func (l *Logger) Println(v ...interface{}) func (l *Logger) SetFlags(flag int) func (l *Logger) SetOutput(w io.Writer) func (l *Logger) SetPrefix(prefix string)
列出Logger结构定义以及Logger结构操作的方法集
通过网页查看文档
godoc命令
$ godoc -http=:6060
godoc会监听6060端口,通过网页访问 http://127.0.0.1:6060,godoc基于GOROOT和GOPATH路径下的代码生成文档的。打开首页如下,我们自己项目工程文档和通过go get的代码文档都在Packages中的Third party里面。
编写自己的文档
1、设计接口函数代码
创建documents/calc.go文件
/* 简易计算器计算自定义包 */ package documents // 一种实现两个整数相加的函数, // 返回值为两整数相加之和 func Add(a, b int) int { return a + b } // 一种实现两个整数相减的函数, // 返回值为两整数相减之差 func Sub(a, b int) int { return a - b } // 一种实现两个整数相乘的函数, // 返回值为两整数相乘之积 func Mul(a, b int) int { return a * b } // 一种实现两个整数相除的函数, // 返回值为两整数相除之商 func Div(a, b int) int { if b == 0 { panic("divide by zero") } return a / b }
2、设计Example示例代码
创建documents/calc_test.go文件,给calc.go中每个函数编写Example函数
package documents import ( "fmt" ) func ExampleAdd() { result := Add(4, 2) fmt.Println("4 + 2 =", result) // Output: // 4 + 2 = 6 } func ExampleSub() { result := Sub(4, 2) fmt.Println("4 - 2 =", result) // Output: // 4 - 2 = 2 } func ExampleMul() { result := Mul(4, 2) fmt.Println("4 * 2 =", result) // Output: // 4 * 2 = 8 } func ExampleDiv() { result := Div(4,2) fmt.Println("4 / 2 =", result) // Output: // 4 / 2 = 2 }
3、网页查看文档
注意以上两个文件必须在$GOPATH/src路径下,使用godoc命令创建文档,用网页打开显示如下
编写文档规则
1、文档中显示的详细主体内容,大多是由用户注释部分提供,注释的方式有两种,单行注释"//"和代码块"/* */"注释。
2、在源码文件中,在package语句前做注释,在文档中看到的就是Overview部分, 注意:此注释必须紧挨package语句前一行,要作为Overview部分的,注释块中间不能有空行。
3、在函数、结构、变量等前做注释的,在文档中看到的就是该项详细描述。注释规则同上。
4、编写的Example程序,函数名必须以Example为前缀,可将测试的输出结果放在在函数尾部,以"// Output:"另起一行,然后将输出内容注释,并追加在后面。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持golang学习网。如有错误或未考虑完全的地方,望不吝赐教。
今天带大家了解了word的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

- 上一篇
- golang 字符串切片去重实例

- 下一篇
- golang逐行读取文件的操作
-
- 受伤的猎豹
- 感谢大佬分享,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢作者大大分享技术文章!
- 2023-01-10 07:08:21
-
- 踏实的牛排
- 这篇文章出现的刚刚好,好细啊,真优秀,已加入收藏夹了,关注大佬了!希望大佬能多写Golang相关的文章。
- 2023-01-07 17:59:10
-
- 如意的蜜粉
- 这篇技术贴真及时,太细致了,赞 👍👍,已收藏,关注作者大大了!希望作者大大能多写Golang相关的文章。
- 2023-01-06 13:54:38
-
- 和谐的小蝴蝶
- 赞 👍👍,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢楼主分享文章内容!
- 2023-01-03 15:11:25
-
- 魁梧的酒窝
- 太细致了,收藏了,感谢老哥的这篇博文,我会继续支持!
- 2023-01-01 16:27:30
-
- 迷人的大叔
- 这篇博文太及时了,作者加油!
- 2022-12-31 12:44:11
-
- Golang · Go教程 | 1天前 |
- TigervncDebian多用户共享桌面超简单教程
- 482浏览 收藏
-
- Golang · Go教程 | 2天前 |
- Go语言新手必看!切片vs数组,一次搞定这两个核心知识点
- 472浏览 收藏
-
- Golang · Go教程 | 2天前 |
- Docker在Debian上运行超简单教程(保姆级教学)
- 210浏览 收藏
-
- Golang · Go教程 | 2天前 |
- Debian设置hostname踩坑记录:权限问题大揭秘
- 334浏览 收藏
-
- Golang · Go教程 | 2天前 |
- Debian装SQLServer?这些问题你一定要注意!
- 284浏览 收藏
-
- Golang · Go教程 | 2天前 |
- Debian系统下Jenkins自动化部署脚本教学
- 367浏览 收藏
-
- Golang · Go教程 | 2天前 |
- DebianSwap服务器应用实测,这些场景真的用得上!
- 319浏览 收藏
-
- Golang · Go教程 | 2天前 |
- Debian跑TigerVNC实测!真香警告,快来看看性能咋样~
- 171浏览 收藏
-
- Golang · Go教程 | 2天前 |
- 在Debian上玩转SQLServer备份还原,手把手教你一步步操作
- 498浏览 收藏
-
- Golang · Go教程 | 3天前 |
- DebianOverlay不会玩?手把手教你轻松定制化安装
- 258浏览 收藏
-
- Golang · Go教程 | 3天前 |
- Go语言实战:time.Ticker&time.After用法区别及避坑技巧
- 240浏览 收藏
-
- Golang · Go教程 | 3天前 |
- Debian系统如何快速定位&干掉那些讨厌的僵尸进程
- 317浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 茅茅虫AIGC检测
- 茅茅虫AIGC检测,湖南茅茅虫科技有限公司倾力打造,运用NLP技术精准识别AI生成文本,提供论文、专著等学术文本的AIGC检测服务。支持多种格式,生成可视化报告,保障您的学术诚信和内容质量。
- 25次使用
-
- 赛林匹克平台(Challympics)
- 探索赛林匹克平台Challympics,一个聚焦人工智能、算力算法、量子计算等前沿技术的赛事聚合平台。连接产学研用,助力科技创新与产业升级。
- 51次使用
-
- 笔格AIPPT
- SEO 笔格AIPPT是135编辑器推出的AI智能PPT制作平台,依托DeepSeek大模型,实现智能大纲生成、一键PPT生成、AI文字优化、图像生成等功能。免费试用,提升PPT制作效率,适用于商务演示、教育培训等多种场景。
- 58次使用
-
- 稿定PPT
- 告别PPT制作难题!稿定PPT提供海量模板、AI智能生成、在线协作,助您轻松制作专业演示文稿。职场办公、教育学习、企业服务全覆盖,降本增效,释放创意!
- 54次使用
-
- Suno苏诺中文版
- 探索Suno苏诺中文版,一款颠覆传统音乐创作的AI平台。无需专业技能,轻松创作个性化音乐。智能词曲生成、风格迁移、海量音效,释放您的音乐灵感!
- 60次使用
-
- Golangmap实践及实现原理解析
- 2022-12-28 505浏览
-
- 试了下Golang实现try catch的方法
- 2022-12-27 502浏览
-
- Go语言中Slice常见陷阱与避免方法详解
- 2023-02-25 501浏览
-
- Golang中for循环遍历避坑指南
- 2023-05-12 501浏览
-
- Go语言中的RPC框架原理与应用
- 2023-06-01 501浏览