2017-06-15 7 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

最終結果はノンスと似た何かを作成しようとしています。だから私は、ハッシュを生成し、1、2、3、... 123などから番号を付加し続けます(例えば、0123ではなく)。ハッシュが4 0で始まるまで続けます。 – Alanay

答えて

1

次の操作を行うことによりSTRING`に[]stringを変換することができます:あなたはまた、最も可能性の高いあなたがstrconv.Itoaを使用することになり、stringi(int)を変換する必要があり

import "strings" 

//... 

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

を。最後に、あなたのコードは次のようになります:あなたはまた、単に直接配列を使用して文字列に追加(または[]バイト)ができませんでした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) 
     } 
    } 
} 

ちょうどmainメソッド作り、配列を毎回リセットするには:

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

答えをありがとう、私は私が文字列にもi(int)を変換する必要がなくなったが。それと似たようなことができますか? – Alanay

+0

最新のコメントありがとうございます。私はスライスから以前に追加された(i)を取り除く必要があることを忘れていました。そうでなければ[a 1 2 3] [a 1 2 3 4]等のようになります。[a 1] [a 2]の代わりに – Alanay

+0

strings.Join()は、かなり長いか、長い文字列があります。 '+'(または '+ =')を使用して追加するよりもずっと安いですが、文字列の不変性は、文字列スライスの長さの合計に等しいサイズの新しいバイト配列全体を、 single strings.Join()コール。 – Kaedys