Go - Scope


  1. Syntactic block: Enclosed in braces
  2. Lexical block: Not explicitly surrounded by braces
  3. Universe block: A lexical block for the entire source code. Include built-in types, function.. Can be referred throughout the entire program
  4. Package level declarations: out side any function can be referred to from any file in the same package
  5. File level declarations: in imported path, can be referred in the same file, but not from another file in the same package without another import.
    (Ex. "fmt" is imported in packageFile1.go, packageFile2.go can not use "fmt", need import by itself)
  6. Declared function can be referenced in the same package, even in different file.
  7. Inner shadow outer block name: Compiler find the innermost enclosing lexical block an up to the universe block. When a name is declared in outer and inner block, inner declaration will be found first.
    1. This example shows inner x hide outer x
    2. This example shows we can declare x and y in "if-else" scope, the the variable is not available out of "if-else" scope
    3. This example shows we can limit file read variables in "if-else" scope
  8. Avoid declare := in a separate var declaration In order to prevent potential problem.



沒有留言:

張貼留言

別名演算法 Alias Method

 題目 每個伺服器支援不同的 TPM (transaction per minute) 當 request 來的時候, 系統需要馬上根據 TPM 的能力隨機找到一個適合的 server. 雖然稱為 "隨機", 但還是需要有 TPM 作為權重. 解法 別名演算法...