go - Go lang 空结构混淆功能
问题描述
这是我的代码:
package main
import (
"fmt"
)
type A struct{}
func main() {
var ad, bd A
res1 := &ad == &bd
res2 := ad == bd
fmt.Println(res1, res2)// true true
fmt.Printf("%p, %p\n", &ad, &bd) // 0x57bb60, 0x57bb60
}
现在,如果我像这样评论 main 函数的最后一行:
package main
import (
"fmt"
)
type A struct{}
func main() {
var ad, bd A
res1 := &ad == &bd
res2 := ad == bd
fmt.Println(res1, res2) // false true
//fmt.Printf("%p, %p\n", &ad, &bd)
}
程序打印false true
!
最后一行如何影响输出?空结构有什么特殊功能吗?还是这个问题是编译器造成的?
解决方案
推荐阅读
- c++ - 如何提高 std::vector 的 ifstream 和 ofstream 的读写速度
- eclipselink - EclipseLink 类和 xml 混合映射
- python - 使用 pyinstaller 编译时找不到 exe 文件
- mysql - 将 2 个计数查询合并为 1 个
- java - 如何模拟 UUID?
- r - 如何使用字符变量作为我的过滤器?
- reporting-services - 矩阵 SSRS 的方差变化百分比
- javascript - Bootstrap:动态表上的数据排序
- mongodb - Fedora 29 MongoDB Compass 安装分段错误核心转储
- c# - 如何在 C# 中将数学运算符作为参数?