2017-06-15 11 views
-1
func lengthOfLongestSubstring(s string) { 
    match := make(map[string]int) 
    var current string 

    current = s[0] 

    if match[current] == 1 { 
     /// 
    } 

} 

なぜcannot use s[0] (type byte) as type string in assignmentが表示されますか?私が知る限り、sはタイプstringで、文字にアクセスするとタイプbyteに変わるのはなぜですか?文字列のインデックスで文字を取得

+2

s [0]を文字列に変換する作業はありますか? – DJSweetness

+2

's [0]'は 'string'ではなく' byte'であるためです。あなたはバイト単位でしか動作させたくないのか、これはutf8のルーンで動作するのでしょうか? – JimB

+0

@JimB私は地図上のキーとして使うことができるように文字を取得したいだけです – chefcurry7

答えて

1

のはgolang公式たちは(https://blog.golang.org/strings)、外出先での文字列を見てどのように読んでみましょう:

ゴーでは、文字列は、実際にバイトの読み取り専用のスライスです。バイトスライスがどういうものなのか、それがどういうものなのかが不明な場合は、前のブログ記事を読んでください。私たちはここにあなたが持っていると仮定します。

文字列の任意のバイトが保持されるようにすることが重要です。 Unicodeテキスト、UTF-8テキスト、その他の事前定義済みの形式を保持する必要はありません。文字列の内容に関しては、バイトのスライスと全く同じです。

明らかに、s [0]はバイト型です。本当に割り当てが必要な場合は、明示的に必要です。

1
func lengthOfLongestSubstring(s string) { 
    strArr:=[]rune(s) 
    fmt.Println(string(strArr[0])) 

} 
関連する問題