首页 > 解决方案 > 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

最后一行如何影响输出?空结构有什么特殊功能吗?还是这个问题是编译器造成的?

标签: gostructcompiler-optimization

解决方案


推荐阅读