dongmei8760 2018-04-10 22:11
浏览 50
已采纳

无效的操作:currency.Name()==货币(字符串和* config.Currency类型不匹配)

I have a function that takes in a string, and checks to see if that string is present in a list of other strings. Simple enough.

func (s *Foo) validateCurrency(currency string) error {
    for _, currency := range s.Config.Currencies {
        if currency.Name() == currency {
            return nil
        }
    }
    return ErrCurrencyNotFound
}

This is the Currency struct:

type Currency struct {
    name    string
    // ...
}

func (c *Currency) Name() string {
    return c.name
}

Yet I seem to be getting this error:

invalid operation: currency.Name() == currency (mismatched types string and *config.Currency)

Why on earth is the Go compiler yelling at me? I don't get it... both are strings. currency.Name() returns a string. Why does the error say it returns a *config.Currency?

  • 写回答

2条回答 默认 最新

  • douyuan1752 2018-04-10 22:20
    关注

    You're shadowing currency in the for loop. Look at this code for a simpler example: https://play.golang.org/p/UFmwqQ4JZtG

    First assignment to currency -> func (s *Foo) validateCurrency(currency string) error {

    Second assignment which shadows the first: -> for _, currency := range s.Config.Currencies {

    Change one of those variable names for a fix.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格