mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2024-12-26 06:46:27 +00:00
9eecd0f991
diff --git a/ch2/ch2-07.md b/ch2/ch2-07.md index f5e75f4..b74cfdd 100644 --- a/ch2/ch2-07.md +++ b/ch2/ch2-07.md @@ -12,7 +12,7 @@ 一个程序可能包含多个同名的声明,只要它们在不同的词法域就没有关系。例如,你可以声明一个局部变量,和包级的变量同名。或者是像2.3.3节的例子那样,你可以将一个函数参数的名字声明为new,虽然内置的new是全局作用域的。但是物极必反,如果滥用不同词法域可重名的特性的话,可能导致程序很难阅读。 -当编译器遇到一个名字引用时,如果它看起来像一个声明,它首先从最内层的词法域向全局的作用域查找。如果查找失败,则报告“未声明的名字”这样的错误。如果该名字在内部和外部的块分别声明过,则内部块的声明首先被找到。在这种情况下,内部声明屏蔽了外部同名的声明,让外部的声明的名字无法被访问: +当编译器遇到一个名字引用时,它会对其定义进行查找,查找过程从最内层的词法域向全局的作用域进行。如果查找失败,则报告“未声明的名字”这样的错误。如果该名字在内部和外部的块分别声明过,则内部块的声明首先被找到。在这种情况下,内部声明屏蔽了外部同名的声明,让外部的声明的名字无法被访问: ```Go func f() {} |
||
---|---|---|
.. | ||
ch2-01.md | ||
ch2-02.md | ||
ch2-03-1.md | ||
ch2-03-2.md | ||
ch2-03-3.md | ||
ch2-03-4.md | ||
ch2-03.md | ||
ch2-04-1.md | ||
ch2-04-2.md | ||
ch2-04.md | ||
ch2-05.md | ||
ch2-06-1.md | ||
ch2-06-2.md | ||
ch2-06.md | ||
ch2-07.md | ||
ch2.md |