我正在通过Go规范来学习语言,这些要点来自" 声明和范围 "中的规范.
虽然我能够理解第1-4点,但我对第5点和第6点感到困惑:
- 在函数内声明的常量或变量标识符的范围从ConstSpec或VarSpec(短变量声明的ShortVarDecl)结束开始,并在最内层包含块的末尾结束.
- 在函数内声明的类型标识符的范围从TypeSpec中的标识符开始,并在最内层包含块的末尾结束.
这是我用来理解Go中范围的代码:
package main
import "fmt"
func main() {
x := 42
fmt.Println(x)
{
fmt.Println(x)
y := "The test message"
fmt.Println(y)
}
// fmt.Println(y) // outside scope of y
}
Run Code Online (Sandbox Code Playgroud)
从这段代码中我了解到范围x
是在main
函数内,并且范围y
是在开始和结束括号之后fmt.Println(x)
,并且我不能y
在结束括号之外使用.
如果我理解正确的话,第4点和第5点都说同样的话.所以我的问题是:
如果他们说同样的话,这两点的重要性是什么?
如果它们不同,您能告诉我区别吗?
我在下面的示例中遇到了Solidity Documentation
并且在我的项目中有类似的代码,default value
如果键不是从调用者传递的,我想设置为键参数
pragma solidity ^0.4.0;
contract C {
function f(uint key, uint value) public {
// ...
}
function g() public {
// named arguments
f({value: 2, key: 3});
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是——
default parameters
吗?感谢帮助?