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

GO語言開發(fā)終端命令行小工具改進(jìn)更新

 更新時間:2024年01月08日 14:35:18   作者:南丞?PFinalClub  
這篇文章主要為大家介紹了GO語言開發(fā)終端命令行小工具的改進(jìn)更新,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

前面有一篇文章記錄了使用 Go 的 cobra/cobra 庫來開發(fā) 終端的小工具 

GO語言開發(fā)終端小工具輕松上手!

在前面的基礎(chǔ)上又更新了一些小的工具.內(nèi)容如下:

   - pf_tools pf_wt 查詢天氣
   - pf_tools pf_m 手機(jī)歸屬地查詢
   - pf_tools pf_md5 md5 小工具
   - pf_tools pf_b64 base64 小工具
   - pf_tools pf_s 查詢網(wǎng)絡(luò)詞匯
   - pf_tools pf_t  獲取當(dāng)前時間戳

其中 「pf_wt」「pf_s」 使用了 網(wǎng)絡(luò)的接口.其他的都是沒有使用網(wǎng)絡(luò)的接口.在更新迭代的過程中,遇到嘞些問題,這里記錄一下.

顯示與復(fù)制的問題

1. 復(fù)制問題

在開發(fā) 「pf_b64」,「pf_t」,「pf_md5」 的時候, 顯示都沒啥問題, 但是在使用的過程中發(fā)現(xiàn), 由于使用了 「termui」 終端 UI 庫導(dǎo)致復(fù)制的時候, 復(fù)制的內(nèi)容是亂的。于是做了如下修改:

 uiEvents := ui.PollEvents()
	for {
		e := <-uiEvents
		switch e.ID {
		case "q":
			return
		case "c":
			_ = clipboard.WriteAll(enStr)
			return
		}
	}

使用了「github.com/atotto/clipboard」庫, 增加了 按鍵 「c」 的時候, 直接復(fù)制到 剪貼板。這樣就方便多了。

2. 顯示問題

「pf_b64」 終端顯示的時候,由于前期測試的是比較短的內(nèi)容, 后來加入比較長的內(nèi)容的時候 導(dǎo)致顯示的內(nèi)容被截斷, 于是做了如下修改:

  func splitStringByLength(s string, length int) []string {
	var result []string
	for i := 0; i < len(s); i += length {
		if i+length > len(s) {
			result = append(result, s[i:])
		} else {
			result = append(result, s[i:i+length])
		}
	}
	return result
}
    sEncList := splitStringByLength(sprintf, 100)
	// fmt.Println(strings.Join(sEncList, "\n"))
	p := widgets.NewParagraph()
	p.Title = "加密結(jié)果"
	p.Text = strings.Join(sEncList, "\n")
	// p.Text = sprintf
	p.TextStyle.Fg = ui.ColorGreen
	p.TextStyle.Modifier = ui.ModifierBold
	p.BorderStyle.Fg = ui.ColorGreen
	p.WrapText = true
	p.SetRect(0, 0, 105, len(sEncList)+2)

對 結(jié)果 的長度進(jìn)行了動態(tài)計算, 然后進(jìn)行了動態(tài)的顯示,出來的效果就是可以換行顯示了,效果如下:

注意: 這里按 c 復(fù)制

打包問題

在 「go build」 以后丟到 linux 系統(tǒng)上 發(fā)現(xiàn) 無法運行, 因為 在 開發(fā) 「pf_m」 命令的時候使用了,第三方的庫 「github.com/zheng-ji/gophone」, 這個庫中有一個 「.dat」的靜態(tài)文件, 在 「go build」 以后沒有打包進(jìn)程序中去, 于是 開啟 google 大法, 發(fā)現(xiàn)還是沒有啥好的解決辦法.

最后, 翻了翻 「github.com/zheng-ji/gophone」 這個包中的源碼, 發(fā)現(xiàn)代碼不多, 直接復(fù)制過來, 然后吧 「.bat」 的數(shù)據(jù)庫文件也復(fù)制過來, 然后去「go build」 發(fā)現(xiàn)還是沒有打包進(jìn)去, 于是 繼續(xù) google 大法, 最后修改了一下 包含文件的代碼:

// 修改前
func init() {
	_, fulleFilename, _, _ := runtime.Caller(0)
	var err error
	content, err = ioutil.ReadFile(path.Join(path.Dir(fulleFilename), PHONE_DAT))
	if err != nil {
		panic(err)
	}
}
// 修改后
//go:embed phone.dat
var fsContent embed.FS
func init() {
	var err error
	content, err = fsContent.ReadFile(PhoneDat)
	if err != nil {
		panic(err)
	}
}

使用了 「embed」 來進(jìn)行導(dǎo)入. 然后順利打包,在 linux 系統(tǒng)上 運行正常.

「上面這種 復(fù)制代碼的解決辦法,估計是個大坑,等后續(xù)看到解決辦法,再來更新記錄」

Windows 顯示問題

由于解決了運行的問題, 以為萬事大吉了 但是在 windows 系統(tǒng)上 發(fā)現(xiàn) 顯示有問題 如下:

搜索發(fā)現(xiàn) 「termui」 在 windows 下不支持中文, 所以只能 放棄 win了

最后

小工具持續(xù)更新,更多關(guān)于GO開發(fā)終端命令行工具的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • go語言中g(shù)orm時間格式化

    go語言中g(shù)orm時間格式化

    本文主要介紹了go語言中g(shù)orm時間格式化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • golang 生成對應(yīng)的數(shù)據(jù)表struct定義操作

    golang 生成對應(yīng)的數(shù)據(jù)表struct定義操作

    這篇文章主要介紹了golang 生成對應(yīng)的數(shù)據(jù)表struct定義操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Gin+Gorm實現(xiàn)CRUD的實戰(zhàn)

    Gin+Gorm實現(xiàn)CRUD的實戰(zhàn)

    本文主要介紹了Gin+Gorm實現(xiàn)CRUD的實戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • golang語言中wasm 環(huán)境搭建的過程詳解

    golang語言中wasm 環(huán)境搭建的過程詳解

    將 golang 打包為 WASM,通常有兩種打包方式,一種是 golang 自帶的,另外是使用 tinygo ,接下來通過本文給大家介紹golang語言中wasm 環(huán)境搭建的過程,感興趣的朋友一起看看吧
    2021-11-11
  • goland?導(dǎo)入github包報紅問題解決

    goland?導(dǎo)入github包報紅問題解決

    本文主要介紹了Go項目在GoLand中導(dǎo)入依賴標(biāo)紅問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Go標(biāo)準(zhǔn)容器之Ring的使用說明

    Go標(biāo)準(zhǔn)容器之Ring的使用說明

    這篇文章主要介紹了Go標(biāo)準(zhǔn)容器之Ring的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Go語言中http.ResponseWriter接口

    Go語言中http.ResponseWriter接口

    http.ResponseWriter是Go語言中用來設(shè)置HTTP響應(yīng)的接口,本文主要介紹了Go語言中http.ResponseWriter接口,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Go語言中定時器cron的基本使用教程

    Go語言中定時器cron的基本使用教程

    這篇文章主要給大家介紹了關(guān)于Go語言中定時器cron使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • go語言使用Chromedp實現(xiàn)二維碼登陸教程示例源碼

    go語言使用Chromedp實現(xiàn)二維碼登陸教程示例源碼

    這篇文章主要為大家介紹了go語言使用Chromedp實現(xiàn)二維碼登陸示例源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • GoFrame框架gset交差并補集使用實例

    GoFrame框架gset交差并補集使用實例

    這篇文章主要為大家介紹了GoFrame框架gset交差并補集使用實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評論