go - switch语句前面的两颗星是什么意思
问题描述
我正在研究现有的 go 代码库,我看到这样的代码
switch v := value.(type) {
case **model.User:
// do something
case **model.Session:
// do something
}
**
每个类型检查前面的意思是什么。这是否意味着指向指针的指针?让我头晕目眩,还是有更简单的东西?
解决方案
Go 中的A*
是一个指针。没有什么特别的**
,它只是一个指向指针的指针。
这是检查是否value
是以下之一:
- 指向 a 的指针的指针
model.User
- 指向 a 的指针的指针
model.Session
*x
当函数需要修改时,将 a传递给函数是相当标准的x
。在这种情况下,x
是*model.User
或之一*model.Session
。
推荐阅读
- java - Selenium WebDriver IE浏览器打开显示安全设置页面并关闭
- html - HTML 中缺少结束标签对性能的影响
- powerbi - 使用 power bi 中的 dax 计算多个日期之间的平均天数
- python - TypeError:预期的字符串或类似字节的对象;我看过类似的帖子,但我的数据中没有 NA
- mysql - 文本长为 sql 列
- c# - 如何将我的 WPF 窗口准确定位在记事本之上?
- css - 在聚合物 2.0 元素的影子 dom 中的 javascript 脚本标记中找不到样式(转换缩放)的 div
- android - 如何从 Firebase Storage 下载 txt 文件并操作其中的数据?
- ruby-on-rails - 如何在 Rails 的 collection_select 中仅显示选定的信息?
- java - android打开应用时所有通知都消失了