在switch语句前两颗星是什么意思

问题描述

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

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

每个类型检查前面的**是什么意思。它是指指向指针的指针吗?使我的头旋转,还是有其他更简单的方法

解决方法

Go中的*pointer**没什么特别的,仅表示一个指向指针的指针。

这正在检查value是否为以下之一:

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

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