2017-06-15 85 views
-2

因此,計劃是在片中有一個字符串,例如「a」,例如,一旦變成「a100」,然後停止運行for循環,該循環將數字添加到結尾。當我嘗試下面的代碼它說:「(不匹配的類型[]字符串和字符串)」,這是因爲我必須將切片轉換爲字符串?如果是這樣,我該怎麼做?謝謝。如何檢查附加切片是否等於一個字符串?

package main 

import "fmt" 

func main() { 
    var s []string 
    s = append(s, "a") 
    fmt.Println(s) 
    for i := 0; i <= 1000; i++ { 
     s = append(s, i) 
     if s == "a10" { 
      fmt.Println("Worked", s) 
     } else { 
      fmt.Println(s) 
     } 
    } 
} 
+0

我不能肯定你的計劃有什麼用,但你可以使用[]字節不是[]字符串會更好。 –

+0

最終的結果是試圖創建類似於nonce的東西。因此,我將生成一個哈希值並繼續追加1,2,3,...等數字(例如不是0123),直到哈希值開始於4 0。 – Alanay

回答

1

您可以通過執行轉換的[]string到string`:

import "strings" 

//... 

if strings.Join(s, "") == "a10" { 
     fmt.Println("Worked", s) 
} else { 
     fmt.Println(s) 
} 

您還需要i(一個int)轉換爲string,最有可能你會使用strconv.Itoa。最後,你的代碼會是這個樣子:https://play.golang.org/p/gD5b5XFimJ

package main 

import (
    "fmt" 
    "strconv" 
    "strings" 
) 

func main() { 
    var s []string 
    s = append(s, "a") 
    fmt.Println(s) 
    for i := 0; i <= 1000; i++ { 
     s = append(s, strconv.Itoa(i)) 
     if strings.Join(s, "") == "a01" { 
      fmt.Println("Worked", s) 
      return 
     } else { 
      fmt.Println(s) 
     } 
    } 
} 

雖然,你也只是不能直接使用數組並添加到字符串(或[]字節)...

package main 

import (
    "fmt" 
    "strconv" 
) 

func main() { 
    var s := "a" 
    fmt.Println(s) 
    for i := 0; i <= 1000; i++ { 
     s += strconv.Itoa(i) 
     if s == "a01" { 
      fmt.Println("Worked", s) 
      return 
     } else { 
      fmt.Println(s) 
     } 
    } 
} 

要每次都重置陣列,只是做的主要方法:

for i := 0; i <= 1000; i++ { 
    s := []string{"a"} 
    s = append(s, strconv.Itoa(i)) 
    if strings.Join(s, "") == "a10" { 
     fmt.Println("Worked", s) 
     return 
    } else { 
     fmt.Println(s) 
    } 
} 
+0

感謝您的答案,儘管我遺漏了我需要將我(int)也轉換爲字符串。你能以類似的方式做到嗎? – Alanay

+0

感謝您的更新評論。我忘了我需要擺脫之前添加的(i)。否則,我得到的東西就像[a 1 2 3] [a 1 2 3 4]等等,而不是[a 1] [a 2] – Alanay

+0

請注意strings.Join()並不便宜,特別是如果片開始獲取很長或者有很長的字符串。它的FAR比使用'+'(或'+ =')追加便宜,但字符串的不變性仍然意味着在每個字符串上分配一個全新的字節數組(大小等於字符串切片中的長度總和)單個字符串。加入()調用。 – Kaedys

相關問題