-2
package main

import (
    "fmt"
)

func main() {
    word := "hello"

    fmt.Println("---------A--------")

    fmt.Printf("%T\n", word[0])

    fmt.Println("---------B--------")

    for i, v := range word {

        fmt.Printf("%T\n", v)

        fmt.Printf("%T\n", word[i])

        break
    }

    fmt.Println("---------C--------")

    fmt.Printf("%T\n", 'h')

    fmt.Println('h' == word[0])

}

谁能解释一下为什么在“C”fmt.Println('h' == word[0])部分没有抛出和错误。我们正在尝试将 rune 与 byte 进行比较,所以它应该会抛出错误。谁能解释一下它背后的原因。

4

1 回答 1

1

'h'是一个无类型常量。无类型常量根据上下文分配类型。在那个特定的上下文中,它被分配了 type byte

这将不起作用:

x:='h'
fmt.Println(x==word[0])

在这种情况下,x被声明为runeword[0]比较会产生错误。

于 2020-07-17T21:56:13.613 回答