`f3()`中`defer`语句中注册的是一个匿名函数,在这个匿名函数中,参数 r 是按值传递的,也就是传递的是 r 的副本。因此,这个匿名函数中的 r 和外层函数 f3() 中的 r 实际上是两个不同的变量。在匿名函数中,r 被加上了 5,但这个修改只是对匿名函数中的 r 副本进行的,不会影响外层函数 f3() 中的 r。
在 Go 语言中,常量在编译时被解析和计算,并直接嵌入到生成的可执行文件中。这意味着在程序运行时,常量的值已经被硬编码到了指令中,而不需要为其分配内存空间。
常量的值在编译阶段就已经确定,并且是不可变的。由于常量的值是固定的,编译器可以直接将其替换为字面值。因此,在运行时并不需要为常量分配内存空间,也不需要为其保存内存地址。
与常量不同,变量的值是在运行时动态确定的,因此需要为变量分配内存空间,并且变量在内存中有对应的地址。
最近的评论