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条)

报告相同问题?

悬赏问题

  • ¥15 Macbookpro 连接热点正常上网,连接不了Wi-Fi。
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析