2013-06-05 63 views
5

我分割字符串用空格:Go的[0]和[:1]之间的区别是什么?

splstr = strings.Split(str, " ") 

然后我遍历每个字,并期待在第一个字符是这样的:

splstr[i][0] == "#" 

但我从该行这些错误:

...:无法将“#”转换为类型uint8

...:无效操作:splstr [i] [ 0] == “#”(类型不匹配UINT8和字符串)

但后来我拼接它:

splstr[i][:1] == "#" 

这工作。我得到为什么[:1]string类型,但为什么[0]类型uint8? (我用围棋1.1)。

+1

'splstr [I] [0] ==“#试试这个''是有效的(注意单引号)。您正在索引字符串的字符,它们本身不是字符串 –

回答

10

因为上一个字符串数组符号可以访问字符串的字节数,如语言规范记载:

http://golang.org/ref/spec#String_types

一个字符串的字节可由整数索引0到len(s)-1访问。

(字节为UINT8别名)

3

[x:x][:x][0:x]一种形式)将切割的切片到另一个切片而[x]将在索引x检索对象。所不同的是如下图所示:

arr := "#####" 
fmt.Println(arr[:1]) // will print out a string 
fmt.Println(arr[0]) // will print out a byte 

如果string转化为[]byte

arr := []byte("#####") 
fmt.Println(arr[:1]) // will print out a slice of bytes 
fmt.Println(arr[0]) // will print out a byte 

你可以自己在http://play.golang.org/p/OOZQqXTaYK

相关问题