首頁  >  文章  >  後端開發  >  Golang 位元組與字串

Golang 位元組與字串

WBOY
WBOY轉載
2024-02-09 09:00:29845瀏覽

Golang 字节与字符串

php小編柚子帶您深入探索Golang中的位元組與字串。在Golang中,位元組和字串是常見的資料類型,但它們之間存在一些細微的差異和轉換方式。了解這些差異和轉換方法,將幫助您更好地處理資料和優化程式效能。本文將介紹位元組和字串的概念、相互轉換的方法以及它們在實際應用中的使用場景,幫助您更好地理解和應用Golang中的位元組和字串。讓我們一起來探索吧!

問題內容

我試圖在 golang 中找到兩個長度相等的字串之間的公共元素。

找到該元素,但字串表示形式似乎也包含位元組值。我怎樣才能擺脫它?

func main() {
    println(fmt.printf("common element = %s",
        findcommonelement("abcdefghi", "ijklmnopq")))
}

func findcommonelement(firstelements, secondelements string) string {
    elementsinfirstgroup := make(map[string]bool)
    for _, charvalue := range firstelements {
        elementsinfirstgroup[string(charvalue)] = true
    }
    for index := range firstelements {
        if _, ok := elementsinfirstgroup[string(secondelements[index])]; ok {
            matchingelem := secondelements[index]
            println(string(matchingelem))
            return string(matchingelem)
        }
    }

    panicmessage := fmt.sprintf("could not find a common item between %s and %s", firstelements, secondelements)
    panic(panicmessage)
}

我得到的輸出是

i
common element = i18 (0x0,0x0)

此處提供程式碼

解決方法

您應該使用fmt.sprintf# 而不是fmt.printf

並避免使用內建 println,而是使用 fmt.println#。

https://pkg.go.dev/[電子郵件受保護]#printf

func printf(format string, a ...any) (n int, err error)

printf 根據格式說明符進行格式化並寫入標準輸出。它傳回寫入的位元組數以及遇到的任何寫入錯誤。

因此 18 (0x0,0x0)...

  • 18 是字串 "common element = i" 中的字元數。
  • (0x0,0x0) 是由 println 印出的 nil 錯誤值。

然而,更重要的是,您的演算法有缺陷,因為它將位元組與符文混合在一起。當您對字串進行 range 時,迭代變數 charvalue 將被指派一個 rune,它可能是多位元組的。但是,當您索引字串(例如 secondelements[index])時,其結果始終是單一 byte。因此,恐慌或亂碼(無效位元組)將不可避免地成為您的函數的結果。請參閱範例

執行以下操作可能會獲得更好的結果:

func findCommonElement(firstElements, secondElements string) string {
    second := map[rune]bool{}
    for _, r := range secondElements {
        second[r] = true
    }

    for _, r := range firstElements {
        if second[r] {
            fmt.Println(string(r))
            return string(r)
        }
    }

    panic("...")
}

https://www.php.cn/link/dbdc69ea6ccbdea0ca2d796e1af24ebf

以上是Golang 位元組與字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除