Bird
Raised Fist0
Goprogramming~5 mins

Package scope rules in Go - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is package scope in Go?
Package scope means that a variable, function, or type is accessible anywhere within the same package but not outside it.
Click to reveal answer
beginner
How do you make a function or variable accessible outside its package in Go?
By starting its name with an uppercase letter, making it exported and accessible from other packages.
Click to reveal answer
beginner
Given this code snippet, where is the variable accessible?
package main

var count int = 5

func main() {
    // ...
}
The variable 'count' is accessible anywhere inside the 'main' package but not from other packages.
Click to reveal answer
intermediate
What happens if two files in the same package declare variables with the same name at package scope?
It causes a compile-time error because package scope variables must have unique names within the package.
Click to reveal answer
intermediate
Explain the difference between package scope and block scope in Go.
Package scope means the identifier is visible throughout the entire package, across all files. Block scope means the identifier is only visible within the enclosing block where it is declared (e.g., inside a function or if statement).
Click to reveal answer
In Go, how do you make a variable accessible outside its package?
AStart its name with an uppercase letter
BDeclare it inside the main function
CUse the 'public' keyword
DPrefix it with 'export_'
Where can a package-scoped variable be accessed?
AOnly inside the function where it is declared
BAnywhere in the program
CAnywhere inside the same package
DOnly inside the file where it is declared
What happens if two package-scoped variables have the same name in the same package?
ANo problem, both exist separately
BCompile-time error
CThe second variable overwrites the first
DRuntime error
Which of these is NOT true about package scope in Go?
AUnexported identifiers are only accessible inside the package
BPackage scope variables are accessible across all files in the package
CExported identifiers are accessible outside the package
DPackage scope variables are accessible from other packages by default
If a variable name starts with a lowercase letter, what is its visibility in Go?
AVisible only inside its package
BVisible everywhere in the program
CVisible only inside its function
DVisible only inside its file
Describe how package scope works in Go and how it affects variable and function visibility.
Think about uppercase vs lowercase naming.
You got /3 concepts.
    Explain why two package-scoped variables cannot have the same name in Go and what error occurs if they do.
    Consider how Go enforces uniqueness in package scope.
    You got /3 concepts.

      Practice

      (1/5)
      1. In Go, what does it mean if a variable name starts with a lowercase letter inside a package?
      easy
      A. It is private to the package and cannot be accessed from other packages.
      B. It is accessible from any package.
      C. It is a constant value.
      D. It is a global variable accessible everywhere.

      Solution

      1. Step 1: Understand Go naming conventions

        In Go, identifiers starting with a lowercase letter are unexported, meaning they are private to the package.
      2. Step 2: Apply package scope rule

        Such variables cannot be accessed from outside their package, ensuring encapsulation.
      3. Final Answer:

        It is private to the package and cannot be accessed from other packages. -> Option A
      4. Quick Check:

        Lowercase start = private [OK]
      Hint: Lowercase start means private inside package [OK]
      Common Mistakes:
      • Thinking lowercase variables are accessible outside package
      • Confusing lowercase with constants
      • Assuming lowercase means global
      2. Which of the following is the correct way to declare an exported function in a Go package?
      easy
      A. func MyFunction() {}
      B. func myFunction() {}
      C. func _MyFunction() {}
      D. func my_function() {}

      Solution

      1. Step 1: Recall Go export rules

        Functions starting with an uppercase letter are exported and accessible outside the package.
      2. Step 2: Check each option

        func MyFunction() {} starts with uppercase 'M', so it is exported. Others start with lowercase or invalid characters.
      3. Final Answer:

        func MyFunction() {} -> Option A
      4. Quick Check:

        Uppercase start = exported function [OK]
      Hint: Function name uppercase means exported [OK]
      Common Mistakes:
      • Using lowercase to export functions
      • Using underscores which are allowed but don't affect export
      • Confusing export with naming style
      3. Given the following Go code in package 'mathops':
      package mathops
      
      var result = 10
      
      func Result() int {
          return result
      }
      What will happen if another package tries to access mathops.result?
      medium
      A. It will access the value 10 successfully.
      B. It will cause a compile-time error due to unexported variable.
      C. It will cause a runtime panic.
      D. It will access a zero value.

      Solution

      1. Step 1: Identify variable scope

        The variable 'result' starts with lowercase, so it is unexported and private to the package.
      2. Step 2: Understand access from other packages

        Accessing 'mathops.result' from outside the package is not allowed and causes a compile-time error.
      3. Final Answer:

        It will cause a compile-time error due to unexported variable. -> Option B
      4. Quick Check:

        Lowercase variable = inaccessible outside package [OK]
      Hint: Lowercase vars cause compile error if accessed outside [OK]
      Common Mistakes:
      • Assuming private variables can be accessed
      • Thinking runtime panic occurs instead of compile error
      • Confusing function export with variable export
      4. Consider this Go code snippet inside a package:
      package example
      
      func calculate() int {
          return 42
      }
      
      func Calculate() int {
          return calculate()
      }
      What is the main reason for defining both calculate and Calculate functions?
      medium
      A. To confuse the compiler with similar names.
      B. To create two independent exported functions.
      C. To cause a compile-time error due to duplicate names.
      D. To have a private helper function and a public wrapper function.

      Solution

      1. Step 1: Analyze function names and scope

        'calculate' starts lowercase, so it is private to the package; 'Calculate' starts uppercase, so it is exported.
      2. Step 2: Understand design pattern

        This pattern allows internal logic in 'calculate' while exposing a public function 'Calculate' that calls it.
      3. Final Answer:

        To have a private helper function and a public wrapper function. -> Option D
      4. Quick Check:

        Lowercase private + uppercase public wrapper [OK]
      Hint: Use lowercase for private helpers, uppercase for public API [OK]
      Common Mistakes:
      • Thinking both functions are exported
      • Expecting compile error from similar names
      • Assuming no reason for two functions
      5. You want to create a Go package that exposes only a function GetData but keeps the data source variable private. Which code snippet correctly implements this using package scope rules?
      hard
      A. package data var datasource = "secret" func getData() string { return datasource }
      B. package data var DataSource = "secret" func GetData() string { return DataSource }
      C. package data var datasource = "secret" func GetData() string { return datasource }
      D. package data var DataSource = "secret" func getData() string { return DataSource }

      Solution

      1. Step 1: Identify private data variable

        The data source variable should start lowercase to be private to the package, so 'datasource' is correct.
      2. Step 2: Identify exported function

        The function 'GetData' starts uppercase, so it is exported and accessible outside the package.
      3. Step 3: Verify function returns private variable

        The function returns the private variable, exposing data safely.
      4. Final Answer:

        package data var datasource = "secret" func GetData() string { return datasource } -> Option C
      5. Quick Check:

        Lowercase var + uppercase func = private data, public access [OK]
      Hint: Private vars lowercase, public funcs uppercase [OK]
      Common Mistakes:
      • Making data variable exported by uppercase
      • Making function unexported by lowercase
      • Returning unexported function instead of exported
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard