关于索引字符串字符的问题



下面是我创建的程序,用来理解Go中字符串索引的工作方式:

package main
import "fmt"
func main() {
vendor1 := "Cisco"
fmt.Println(vendor1[0])  
fmt.Println(vendor1[1:4]) 
fmt.Println(vendor1[1:])  
fmt.Println(vendor1[:])
}

输出:

C:GolangVARIABLE> go run .variable.go
67
isc
isco
Cisco

令我困惑的是Println(vendor1[0])返回数字'67'而不是'C',为什么会这样?为什么它不同于Println(vendor1[1:4]), Println(vendor1[1:])和Println(vendor1[:]),它们都返回所需的字符?

索引表达式与切片表达式不是一回事,不要将它们混为一谈。

索引,而不是切片,返回byte,它是uint8的类型别名,Println只是打印无符号整数。

切片返回一个字符串,这就是为什么Println输出一个文本。

要打印索引0处的值,请使用fmt.Printf("%cn", vendor1[0])而不是fmt.Println(vendor1[0]),对于其他三个值,您可以使用%sfmt.Printf(),因为它们是字符串。我将你的代码修改如下:

package main
import (
"fmt"
)
func main() {
vendor1 := "Cisco"
fmt.Printf("%cn", vendor1[0])
fmt.Printf("%sn", vendor1[1:4])
fmt.Printf("%sn", vendor1[1:])
fmt.Printf("%sn", vendor1[:])
}

输出:

C
isc
isco
Cisco

最新更新