日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

golang 解析word文檔操作

瀏覽:176日期:2022-07-13 10:05:06
baliance/gooxml

gooxml是可以對整個office document提供支持的golang庫,功能很強大,這里簡單給出對word文檔的讀取案例

安裝

go get baliance.com/gooxml/

go build -i baliance.com/gooxml/…

解析word代碼

package mainimport ( '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 解析word文檔操作

運行代碼結果如下:

golang 解析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/xcd $GOPATH/src/golang.org/xgit clone https://github.com/golang/tools.gitcd tools/cmd/godocgo 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 docpackage 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], andPanic[f|ln], which are easier to use than creating a Logger manually. Thatlogger writes to standard error and prints the date and time of each loggedmessage. Every log message is output on a separate line: if the messagebeing printed does not end in a newline, the logger will add one. The Fatalfunctions call os.Exit(1) after writing the log message. The Panic functionscall panic after writing the log message. const Ldate = 1 << iota ...func Fatal(v ...interface{})func Fatalf(format string, v ...interface{})func Fatalln(v ...interface{})func Flags() intfunc Output(calldepth int, s string) errorfunc Panic(v ...interface{})func Panicf(format string, v ...interface{})func Panicln(v ...interface{})func Prefix() stringfunc Print(v ...interface{})func Printf(format string, v ...interface{})func Println(v ...interface{})func SetFlags(flag int)func SetOutput(w io.Writer)func SetPrefix(prefix string)type Logger struct{ ... } func New(out io.Writer, prefix string, flag int) *Logger

列出當前包中方法、結構、常量等

查看系統log包中Fatal方法

linux@ubuntu:/usr/local/go/src/log$ go doc log.Fatalfunc 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 Loggertype 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) *Loggerfunc (l *Logger) Fatal(v ...interface{})func (l *Logger) Fatalf(format string, v ...interface{})func (l *Logger) Fatalln(v ...interface{})func (l *Logger) Flags() intfunc (l *Logger) Output(calldepth int, s string) errorfunc (l *Logger) Panic(v ...interface{})func (l *Logger) Panicf(format string, v ...interface{})func (l *Logger) Panicln(v ...interface{})func (l *Logger) Prefix() stringfunc (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命令創建文檔,用網頁打開顯示如下

golang 解析word文檔操作

編寫文檔規則

1、文檔中顯示的詳細主體內容,大多是由用戶注釋部分提供,注釋的方式有兩種,單行注釋'//'和代碼塊'/* */'注釋。

2、在源碼文件中,在package語句前做注釋,在文檔中看到的就是Overview部分, 注意:此注釋必須緊挨package語句前一行,要作為Overview部分的,注釋塊中間不能有空行。

3、在函數、結構、變量等前做注釋的,在文檔中看到的就是該項詳細描述。注釋規則同上。

4、編寫的Example程序,函數名必須以Example為前綴,可將測試的輸出結果放在在函數尾部,以'// Output:'另起一行,然后將輸出內容注釋,并追加在后面。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: word
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本免费在线视频不卡一不卡二| 亚洲精品影视| 欧美激情综合| 久久精品资源| 韩国女主播一区二区三区| 久久亚洲人体| 久久久久久夜| 美女精品久久| 国产精品精品国产一区二区| 日本а中文在线天堂| 久久天堂精品| 亚洲中字黄色| 奇米狠狠一区二区三区| 国产欧美丝祙| 国内不卡的一区二区三区中文字幕| 成人日韩av| 亚洲香蕉网站| 一区二区三区四区精品视频| 日韩av网站免费在线| 奇米狠狠一区二区三区| 欧美激情网址| 国产自产自拍视频在线观看| 麻豆网站免费在线观看| 欧美日中文字幕| 婷婷丁香综合| 亚洲精品国产日韩| 精品一区二区三区中文字幕视频 | 视频一区二区三区中文字幕| 午夜亚洲福利| 激情久久一区二区| 久久亚洲在线| 综合亚洲自拍| 精品中文字幕一区二区三区四区| 丝袜诱惑一区二区| 噜噜噜躁狠狠躁狠狠精品视频 | 亚洲精品乱码久久久久久蜜桃麻豆 | 极品av在线| 国产99久久| 综合欧美亚洲| 国产精品99视频| 欧美日韩精品一本二本三本| 日韩精品免费一区二区夜夜嗨| 精品国产乱码| 一区二区视频欧美| 久久国产精品色av免费看| 国产aⅴ精品一区二区四区| 欧美日韩少妇| 国产精品videossex久久发布| 在线手机中文字幕| 男女激情视频一区| 激情久久99| 噜噜噜躁狠狠躁狠狠精品视频| 久久永久免费| 丝袜a∨在线一区二区三区不卡| 国产劲爆久久| 羞羞答答国产精品www一本| 你懂的亚洲视频| 欧美女激情福利| 欧美激情麻豆| 三级在线观看一区二区| 国内精品麻豆美女在线播放视频| 午夜av一区| 久久亚洲人体| 亚洲我射av| 国产aⅴ精品一区二区四区| 美女久久一区| 日韩不卡视频在线观看| 日韩精品视频一区二区三区| 黑森林国产精品av| 久久国产欧美日韩精品| 激情久久婷婷| 麻豆精品99| 中文一区一区三区免费在线观| 97精品国产福利一区二区三区| 天堂va在线高清一区| 99精品在线免费在线观看| 国产精品第十页| 亚洲毛片视频| 在线国产一区二区| 九九99久久精品在免费线bt| 伊人久久一区| 婷婷亚洲综合| 日韩理论片av| 国产精品久久久久久av公交车 | 亚洲精品福利| 欧美日韩视频| 日韩和的一区二在线| 久久成人福利| 97久久精品| 男女男精品视频网| 欧美+日本+国产+在线a∨观看| 精品一区二区三区四区五区| 婷婷亚洲成人| 国产午夜精品一区二区三区欧美| 国产精品专区免费| 久久影院一区二区三区| 欧美日韩亚洲一区二区三区在线| 日韩制服丝袜av| 九一国产精品| 91精品啪在线观看国产18| 荡女精品导航| 美腿丝袜亚洲一区| 国产欧美二区| 久久精品97| 日本不卡视频在线观看| 日本欧美在线看| 好看的亚洲午夜视频在线| 色婷婷精品视频| 久久一区精品| 精品视频一区二区三区四区五区 | 久久精品观看| 久久久久国产精品一区二区| 亚洲欧洲高清| 日韩专区精品| 色黄视频在线观看| 天堂√8在线中文| 欧美成人a交片免费看| 欧美激情另类| 欧美天堂视频| 久久精品卡一| 久久精品高清| 蜜桃国内精品久久久久软件9| 日韩一区二区三区免费| 日韩三区免费| 丝袜av一区| 激情久久久久久久| 黄色精品网站| 在线精品视频一区| 日本中文字幕一区二区视频 | 日韩av片子| 久久久久网站| 日韩视频精品在线观看| 99亚洲视频| 日韩一区二区久久| 免费观看久久久4p| 亚洲日产国产精品| 国产三级一区| 成人精品久久| 91精品一区二区三区综合| 久久人人97超碰国产公开结果| 欧美福利一区| 美女久久一区| 欧美一区免费| 精品精品久久| 秋霞国产精品| 老色鬼久久亚洲一区二区| 亚洲毛片在线| 国产精品极品在线观看| 你懂的网址国产 欧美| 亚洲免费福利| 亚洲女同中文字幕| 午夜精品福利影院| 久久影院资源站| 国产综合精品一区| 亚洲理论在线| 国产在线不卡一区二区三区| 亚洲电影有码| 亚洲综合色婷婷在线观看| 国产精品一国产精品| 亚洲综合电影| 在线精品视频一区| 老牛国内精品亚洲成av人片| 亚洲成av在线| 首页国产欧美日韩丝袜| 国产精品午夜av| 99热国内精品| 日韩高清中文字幕一区| 欧美日韩国产观看视频| 老牛影视一区二区三区| 欧美激情日韩| 激情综合自拍| 久久国内精品| 今天的高清视频免费播放成人| 日韩在线电影| 桃色av一区二区| 亚洲精品无吗| 成人美女视频| 日本一区福利在线| 成人国产精品| 亚洲久久一区| 日韩电影免费在线观看| 蜜臀久久久99精品久久久久久| 欧美激情视频一区二区三区在线播放| 欧美午夜精彩| 国产伦精品一区二区三区在线播放| 91精品国产乱码久久久久久久| 五月国产精品| 亚洲91视频| 国产精品探花在线观看| 午夜久久99| 九九九精品视频| 亚洲区国产区| 91精品亚洲| 国产探花在线精品| 99国产精品| 老牛影视精品| 国产欧美日韩视频在线 | 视频一区国产视频| 精品国产免费人成网站| 日本欧美久久久久免费播放网|