2013-08-08 17 views

cevap

20

Effective Go bu örneğe bakın:

for pos, char := range "日本語" { 
    fmt.Printf("character %c starts at byte position %d\n", char, pos) 
} 

Bu baskılar: dizeleri için

character 日 starts at byte position 0 
character 本 starts at byte position 3 
character 語 starts at byte position 6 

, aralık ayrıştırma yoluyla bireysel Unicode kod noktalarını kırarak, sizin için daha fazla iş yapar UTF-8. Örneğin

3

:

package main 

import "fmt" 

func main() { 
     for i, rune := range "Hello, 世界" { 
       fmt.Printf("%d: %c\n", i, rune) 
     } 
} 

Playground


Çıktı: golang.org verilen bir örnek yansıtmak için

0: H 
1: e 
2: l 
3: l 
4: o 
5: , 
6: 
7: 世 
10: 界 
1

, Go kolayca bir dize dönüştürmek için izin verir bir dilim r

runes := []rune("Hello, 世界") 
for i := 0; i < len(runes) ; i++ { 
    fmt.Printf("Rune %v is '%c'\n", i, runes[i]) 
} 

Tabii, biz de burada diğer örneklerde olduğu gibi bir dizi operatörü kullanabilirsiniz, ancak bu daha yakından orijinal sözdizimi aşağıdaki gibidir: unes ardından da başlangıçta istediğin gibi o üzerinde yineleme. Her durumda, bu irade çıkışı: rune tip int32 için bir takma ad olduğundan

Rune 0 is 'H' 
Rune 1 is 'e' 
Rune 2 is 'l' 
Rune 3 is 'l' 
Rune 4 is 'o' 
Rune 5 is ',' 
Rune 6 is ' ' 
Rune 7 is '世' 
Rune 8 is '界' 

Not biz Printf açıklamada alışılmış %v ait %c kullanması gerektiğini, yoksa tamsayı temsilini göreceksiniz Unicode kod noktası (bkz. A Tour of Go).

İlgili konular