欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang 解析word文檔操作

 更新時(shí)間:2020年12月22日 10:34:50   作者:跑碼場(chǎng)  
這篇文章主要介紹了golang 解析word文檔操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

baliance/gooxml

gooxml是可以對(duì)整個(gè)office document提供支持的golang庫(kù),功能很強(qiáng)大,這里簡(jiǎn)單給出對(duì)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為每個(gè)段落相同格式的文字組成的片段
  fmt.Println("-----------第", i, "段-------------")
  for j, run := range para.Runs() {
   fmt.Print("\t-----------第", j, "格式片段-------------")
   fmt.Print(run.Text())
  }
  fmt.Println()
 }
}

舉個(gè)例子:

下圖為word文檔的截圖,總共四行,第一行有三種字體

運(yùn)行代碼結(jié)果如下:

補(bǔ)充:golang go doc 與 godoc 文檔生成查看

Go語(yǔ)言項(xiàng)目十分重視代碼的文檔,在軟件設(shè)計(jì)中,文檔對(duì)于軟件的可維護(hù)和易使用具有重大的影響。因此,文檔必須是書(shū)寫(xiě)良好并準(zhǔn)確的,與此同時(shí)它還需要易于書(shū)寫(xiě)和維護(hù)。

Go語(yǔ)言注釋

Go語(yǔ)言中注釋一般分為兩種,分別是單行注釋和多行注釋

單行注釋是以 // 開(kāi)頭的注釋?zhuān)梢猿霈F(xiàn)在任何地方。

多行注釋也叫塊注釋?zhuān)?/* 開(kāi)頭,以 */ 結(jié)尾,不可以嵌套使用,一般用于包的文檔描述或注釋成塊的代碼片段。

每一個(gè) package 都應(yīng)該有相關(guān)注釋?zhuān)?package 語(yǔ)句之前的注釋內(nèi)容將被默認(rèn)認(rèn)為是這個(gè)包的文檔, package 的注釋?xiě)?yīng)該提供一些相關(guān)信息并對(duì)整體功能做簡(jiǎn)要的介紹。

在日常開(kāi)發(fā)過(guò)程中,可以使用go doc和godoc命令生成代碼的文檔。

go doc

go doc 命令打印Go語(yǔ)言程序?qū)嶓w上的文檔。可以使用參數(shù)來(lái)指定程序?qū)嶓w的標(biāo)識(shí)符。

Go語(yǔ)言程序?qū)嶓w是指變量、常量、函數(shù)、結(jié)構(gòu)體以及接口。

程序?qū)嶓w標(biāo)識(shí)符就是程序?qū)嶓w的名稱(chēng)。

go doc 用法

go doc [-u] [-c] [package|[package.]symbol[.methodOrField]]

可用的標(biāo)識(shí):

標(biāo)識(shí) 說(shuō)明
-all 顯示所有文檔
-c 匹配程序?qū)嶓w時(shí),大小寫(xiě)敏感
-cmd 將命令(main包)視為常規(guī)程序包,如果要顯示main包的doc,請(qǐng)指定這個(gè)標(biāo)識(shí)
-src 顯示完整源代碼
-u 顯示未導(dǎo)出的程序?qū)嶓w

示例

輸出指定 package ,指定類(lèi)型,指定方法的注釋

$ go doc sync.WaitGroup.Add

輸出指定 package ,指定類(lèi)型的所有程序?qū)嶓w,包括未導(dǎo)出的

$ go doc -u -all sync.WaitGroup

輸出指定 package 的所有程序?qū)嶓w(非所有詳細(xì)注釋?zhuān)?/p>

$ go doc -u sync

godoc

godoc命令主要用于在無(wú)法聯(lián)網(wǎng)的環(huán)境下,以web形式,查看Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)和項(xiàng)目依賴(lài)庫(kù)的文檔。

在 go 1.12 之后的版本中,godoc不再做為go編譯器的一部分存在。依然可以通過(guò)go get命令安裝:

go get -u -v golang.org/x/tools/cmd/godoc

國(guó)內(nèi)的安裝方法

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

通過(guò)終端查看文檔

go doc命令

$ go doc help

usage: go doc [-u] [-c] [package|[package.]symbol[.method]]

可以看到,go doc接受的參數(shù),可以是包名,也可以是包里的結(jié)構(gòu)、方法等,默認(rèn)為顯示當(dāng)前目錄下的文檔。

查看系統(tǒng)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 << iota ...
func Fatal(v ...interface{})
func Fatalf(format string, v ...interface{})
func Fatalln(v ...interface{})
func Flags() int
func Output(calldepth int, s string) error
func Panic(v ...interface{})
func Panicf(format string, v ...interface{})
func Panicln(v ...interface{})
func Prefix() string
func 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

列出當(dāng)前包中方法、結(jié)構(gòu)、常量等

查看系統(tǒng)log包中Fatal方法

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).

列出當(dāng)前函數(shù)和注釋說(shuō)明

查看系統(tǒng)log包中Logger結(jié)構(gòu)

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結(jié)構(gòu)定義以及Logger結(jié)構(gòu)操作的方法集

通過(guò)網(wǎng)頁(yè)查看文檔

godoc命令

$ godoc -http=:6060

godoc會(huì)監(jiān)聽(tīng)6060端口,通過(guò)網(wǎng)頁(yè)訪問(wèn) http://127.0.0.1:6060,godoc基于GOROOT和GOPATH路徑下的代碼生成文檔的。打開(kāi)首頁(yè)如下,我們自己項(xiàng)目工程文檔和通過(guò)go get的代碼文檔都在Packages中的Third party里面。

編寫(xiě)自己的文檔

1、設(shè)計(jì)接口函數(shù)代碼

創(chuàng)建documents/calc.go文件

/*
簡(jiǎn)易計(jì)算器計(jì)算自定義包
 */
package documents
 
// 一種實(shí)現(xiàn)兩個(gè)整數(shù)相加的函數(shù),
// 返回值為兩整數(shù)相加之和
func Add(a, b int) int {
 return a + b
}
 
// 一種實(shí)現(xiàn)兩個(gè)整數(shù)相減的函數(shù),
// 返回值為兩整數(shù)相減之差
func Sub(a, b int) int {
 return a - b
}
 
// 一種實(shí)現(xiàn)兩個(gè)整數(shù)相乘的函數(shù),
// 返回值為兩整數(shù)相乘之積
func Mul(a, b int) int {
 return a * b
}
 
// 一種實(shí)現(xiàn)兩個(gè)整數(shù)相除的函數(shù),
// 返回值為兩整數(shù)相除之商
func Div(a, b int) int {
 if b == 0 {
  panic("divide by zero")
 } 
 return a / b
}

2、設(shè)計(jì)Example示例代碼

創(chuàng)建documents/calc_test.go文件,給calc.go中每個(gè)函數(shù)編寫(xiě)Example函數(shù)

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、網(wǎng)頁(yè)查看文檔

注意以上兩個(gè)文件必須在$GOPATH/src路徑下,使用godoc命令創(chuàng)建文檔,用網(wǎng)頁(yè)打開(kāi)顯示如下

編寫(xiě)文檔規(guī)則

1、文檔中顯示的詳細(xì)主體內(nèi)容,大多是由用戶注釋部分提供,注釋的方式有兩種,單行注釋"http://"和代碼塊"/* */"注釋。

2、在源碼文件中,在package語(yǔ)句前做注釋?zhuān)谖臋n中看到的就是Overview部分, 注意:此注釋必須緊挨package語(yǔ)句前一行,要作為Overview部分的,注釋塊中間不能有空行。

3、在函數(shù)、結(jié)構(gòu)、變量等前做注釋的,在文檔中看到的就是該項(xiàng)詳細(xì)描述。注釋規(guī)則同上。

4、編寫(xiě)的Example程序,函數(shù)名必須以Example為前綴,可將測(cè)試的輸出結(jié)果放在在函數(shù)尾部,以"http:// Output:"另起一行,然后將輸出內(nèi)容注釋?zhuān)⒆芳釉诤竺妗?/p>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 在?Go?語(yǔ)言中使用?regexp?包處理正則表達(dá)式的操作

    在?Go?語(yǔ)言中使用?regexp?包處理正則表達(dá)式的操作

    正則表達(dá)式是處理字符串時(shí)一個(gè)非常強(qiáng)大的工具,而?Go?語(yǔ)言的?regexp?包提供了簡(jiǎn)單而強(qiáng)大的接口來(lái)使用正則表達(dá)式,本文將介紹如何在?Go?中使用?regexp?包來(lái)編譯和執(zhí)行正則表達(dá)式,以及如何從文本中匹配和提取信息,感興趣的朋友一起看看吧
    2023-12-12
  • Go Java算法之二叉樹(shù)的所有路徑示例詳解

    Go Java算法之二叉樹(shù)的所有路徑示例詳解

    這篇文章主要為大家介紹了Go Java算法之二叉樹(shù)的所有路徑示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 一文帶你深入理解Golang中的泛型

    一文帶你深入理解Golang中的泛型

    Go?在泛型方面一直被詬病,因?yàn)樗谶@方面相對(duì)比較落后。但是,在?Go?1.18?版本中,泛型已經(jīng)被正式引入,成為了?Go?語(yǔ)言中一個(gè)重要的特性。本文將會(huì)詳細(xì)介紹?Go?泛型的相關(guān)概念,語(yǔ)法和用法,希望能夠幫助大家更好地理解和應(yīng)用這一特性
    2023-05-05
  • golang http請(qǐng)求封裝代碼

    golang http請(qǐng)求封裝代碼

    這篇文章主要介紹了golang http請(qǐng)求封裝代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 詳解Go語(yǔ)言中泛型的實(shí)現(xiàn)原理與使用

    詳解Go語(yǔ)言中泛型的實(shí)現(xiàn)原理與使用

    本文是對(duì)泛型的基本思想及其在?Go?中的實(shí)現(xiàn)的一個(gè)比較容易理解的介紹,同時(shí)也是對(duì)圍繞泛型的各種性能討論的簡(jiǎn)單總結(jié),感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • Go語(yǔ)言interface 與 nil 的比較

    Go語(yǔ)言interface 與 nil 的比較

    在golang中,nil只能賦值給指針、channel、func、interface、map或slice類(lèi)型的變量。如果未遵循這個(gè)規(guī)則,則會(huì)引發(fā)panic。
    2017-08-08
  • Golang定時(shí)器的2種實(shí)現(xiàn)方法與區(qū)別

    Golang定時(shí)器的2種實(shí)現(xiàn)方法與區(qū)別

    這篇文章主要給大家介紹了關(guān)于Golang定時(shí)器的2種實(shí)現(xiàn)方法與區(qū)別的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 一文帶你了解Go語(yǔ)言如何解析JSON

    一文帶你了解Go語(yǔ)言如何解析JSON

    本文將說(shuō)明如何利用?Go?語(yǔ)言將?JSON?解析為結(jié)構(gòu)體和數(shù)組,如果解析?JSON?的嵌入對(duì)象,如何將?JSON?的自定義屬性名稱(chēng)映射到結(jié)構(gòu)體,如何解析非結(jié)構(gòu)化的?JSON?字符串
    2023-01-01
  • 從零封裝Gin框架配置初始化全局變量

    從零封裝Gin框架配置初始化全局變量

    這篇文章主要為大家介紹了從零封裝Gin框架配置初始化全局變量,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 讓go程序以后臺(tái)進(jìn)程或daemon方式運(yùn)行方法探究

    讓go程序以后臺(tái)進(jìn)程或daemon方式運(yùn)行方法探究

    本文探討了如何通過(guò)Go代碼實(shí)現(xiàn)在后臺(tái)運(yùn)行的程序,最近我用Go語(yǔ)言開(kāi)發(fā)了一個(gè)WebSocket服務(wù),我希望它能在后臺(tái)運(yùn)行,并在異常退出時(shí)自動(dòng)重新啟動(dòng),我的整體思路是將程序轉(zhuǎn)為后臺(tái)進(jìn)程,也就是守護(hù)進(jìn)程(daemon)
    2024-01-01

最新評(píng)論