首页 > 解决方案 > switch语句前面的两颗星是什么意思

问题描述

我正在研究现有的 go 代码库,我看到这样的代码

        switch v := value.(type) {
        case **model.User:
             // do something
        case **model.Session:
            // do something
        }

**每个类型检查前面的意思是什么。这是否意味着指向指针的指针?让我头晕目眩,还是有更简单的东西?

标签: gopointers

解决方案


Go 中的A*是一个指针。没有什么特别的**,它只是一个指向指针的指针。

这是检查是否value是以下之一:

  • 指向 a 的指针的指针model.User
  • 指向 a 的指针的指针model.Session

*x当函数需要修改时,将 a传递给函数是相当标准的x。在这种情况下,x*model.User或之一*model.Session


推荐阅读