首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go自动类型转换-比较整数{}和具体类型

Go自动类型转换-比较整数{}和具体类型
EN

Stack Overflow用户
提问于 2020-03-23 09:37:34
回答 1查看 246关注 0票数 0

如果我想比较两种类型-字符串接口{},我通常会写:

代码语言:javascript
复制
package main

import "log"

func main() {
    var p1 interface{}
    var p2 string

    p1 = "123"
    p2 = "123"

    if v, ok := p1.(string); ok {
        log.Println(v == p2)
    } else {
        log.Println("false")    
    }
}

类型(P1) != string时,我认为它是保存变量。但是如果我写信是对的吗?

代码语言:javascript
复制
package main

import "log"

func main() {
    var p1 interface{}
    var p2 string

    p1 = "123"
    p2 = "123"

    log.Println(p1 == p2)
}

如果类型(P1) !=字符串没有错误。但这是同一个变体,还是我应该写上一个?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-23 13:59:54

对您当前问题的简短回答是yes,尽管原始代码(您问题中的第一个片段)对类型检查显示出更多的考虑,因此从SW工程的角度来看,它可能更正确。如果不了解更多的上下文,就很难分辨。

根据围棋规格

接口值是可比较的。如果两个接口值具有相同的动态类型和相同的动态值,或者两者的值为零,则它们是相等的。 非接口类型x的值x和接口类型T的值t是可比较的,当X类型的值可比较且X实现T时,如果t的动态类型与X相同,t的动态值等于x,则它们是相等的。

我相信你的要求是在第二段的范围内。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60810966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档