gpt4 book ai didi

go - 比较命名管道和未命名类型时编译错误

转载 作者:IT王子 更新时间:2023-10-29 02:27:57 27 4
gpt4 key购买 nike

package main

import (
"fmt"
"html/template"
)

func main() {
fmt.Println(template.HTML("test") == "test")

htmlString := "test"
fmt.Println(template.HTML("test") == htmlString)
}

http://play.golang.org/p/dON4eLpGN8

template.HTML 的文档: http://golang.org/pkg/html/template/#HTML

第一个比较是true。但是,第二次比较会产生以下错误:

invalid operation: "html/template".HTML("test") == htmlString (mismatched types "html/template".HTML and string)

谁能解释一下幕后发生的事情?

最佳答案

简而言之,第二个表达式无效,它们的类型不兼容。

Go 中的每个操作,参数必须是同一类型。第二个表达式

template.HTML("test") == htmlString

无效,因为它正在比较 template.HTMLstringtemplate.HTML虽然是由string驱动的,但是不兼容。您应该将变量转换为 template.HTML(htmlString)

但是第一个表达式

template.HTML("test") == "test"

是有效的,因为常量“test”的类型被解释为 template.HTML。无类型常量具有默认类型,但它可以是编译时上下文驱动的任何类型。 This article详细解释常量。也许这篇文章可以让您的问题更清楚。

关于go - 比较命名管道和未命名类型时编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28791568/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com