最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

引言

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

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

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

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

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

顯示與復制的問題

1. 復制問題

在開發(fā) 「pf_b64」,「pf_t」,「pf_md5」 的時候, 顯示都沒啥問題, 但是在使用的過程中發(fā)現(xiàn), 由于使用了 「termui」 終端 UI 庫導致復制的時候, 復制的內(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」 的時候, 直接復制到 剪貼板。這樣就方便多了。

2. 顯示問題

「pf_b64」 終端顯示的時候,由于前期測試的是比較短的內(nèi)容, 后來加入比較長的內(nèi)容的時候 導致顯示的內(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 = "加密結果"
	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)

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

注意: 這里按 c 復制

打包問題

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

最后, 翻了翻 「github.com/zheng-ji/gophone」 這個包中的源碼, 發(fā)現(xiàn)代碼不多, 直接復制過來, 然后吧 「.bat」 的數(shù)據(jù)庫文件也復制過來, 然后去「go build」 發(fā)現(xià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」 來進行導入. 然后順利打包,在 linux 系統(tǒng)上 運行正常.

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

Windows 顯示問題

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

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

最后

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

相關文章

  • Go語言dolphinscheduler任務調(diào)度處理

    Go語言dolphinscheduler任務調(diào)度處理

    這篇文章主要為大家介紹了Go語言dolphinscheduler任務調(diào)度處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Go?實現(xiàn)?WebSockets之創(chuàng)建?WebSockets

    Go?實現(xiàn)?WebSockets之創(chuàng)建?WebSockets

    這篇文章主要介紹了Go?實現(xiàn)?WebSockets之創(chuàng)建?WebSockets,文章主要探索?WebSockets,并簡要介紹了它們的工作原理,并仔細研究了全雙工通信,想了解更多相關內(nèi)容的小伙伴可以參考一下
    2022-04-04
  • Go語言中字符串四種拼接方式的性能對比

    Go語言中字符串四種拼接方式的性能對比

    在go語言中,字符串是不可變的,因此字符串之間的拼接實際上是創(chuàng)建了一個新的字符串,如果頻繁操作會對性能產(chǎn)生嚴重的影響,下面我們來看看Go語言中字符串四種常見拼接方式的性能對比吧
    2025-04-04
  • Golang如何構造最佳隨機密碼詳解

    Golang如何構造最佳隨機密碼詳解

    人們往往有使用同一密碼的習慣,為了防止數(shù)據(jù)庫意外泄露/破壞和出于保護用戶隱私的目的,下面這篇文章主要給大家介紹了關于Golang如何構造最佳隨機密碼的相關資料,需要的朋友可以參考下
    2023-01-01
  • 手把手教你導入Go語言第三方庫

    手把手教你導入Go語言第三方庫

    本文主要介紹了手把手教你導入Go語言第三方庫,通過導入gin包來深入學習,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Go語言切片(Slice)使用技巧與避坑指南

    Go語言切片(Slice)使用技巧與避坑指南

    切片(Slice)是Go語言中最靈活且高頻使用的數(shù)據(jù)結構之一,其本質是對底層數(shù)組的動態(tài)引用視圖,支持動態(tài)擴容、高效截取等特性,本文將結合代碼示例,詳細解析切片的核心用法及常見注意事項,需要的朋友可以參考下
    2025-06-06
  • golang使用通道時需要注意的一些問題

    golang使用通道時需要注意的一些問題

    本文主要介紹了golang使用通道時需要注意的一些問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Go中crypto/rsa庫的高效使用指南

    Go中crypto/rsa庫的高效使用指南

    本文主要介紹了Go中crypto/rsa庫的高效使用指南,從 RSA 的基本原理到 crypto/rsa 庫的實際應用,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Go實現(xiàn)SSE消息推送的項目實戰(zhàn)

    Go實現(xiàn)SSE消息推送的項目實戰(zhàn)

    本文主要介紹了Go實現(xiàn)SSE消息推送的項目實戰(zhàn),結合JavaScript前端集成,構建實時數(shù)據(jù)推送系統(tǒng),文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2025-05-05
  • 詳解Go strconv包

    詳解Go strconv包

    Go語言中strconv包實現(xiàn)了基本數(shù)據(jù)類型和其字符串表示的相互轉換。這篇文章主要介紹了Go strconv包的相關知識,需要的朋友可以參考下
    2020-10-10

最新評論

顺平县| 习水县| 南华县| 镇赉县| 宁阳县| 新泰市| 社旗县| 石狮市| 泰宁县| 西乌珠穆沁旗| 留坝县| 康保县| 榆林市| 岑溪市| 鹰潭市| 江源县| 巧家县| 垫江县| 尉氏县| 阿拉尔市| 阜新| 甘泉县| 绥棱县| 嘉义县| 株洲市| 林西县| 衡阳市| 元阳县| 朝阳区| 昭觉县| 三江| 宜兴市| 辰溪县| 麻阳| 湖州市| 建水县| 安国市| 象山县| 小金县| SHOW| 永泰县|