Initial commit
This commit is contained in:
24
03-packages-and-scopes/02-scopes/01-scopes/main.go
Normal file
24
03-packages-and-scopes/02-scopes/01-scopes/main.go
Normal file
@@ -0,0 +1,24 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
// file scope
|
||||
import "fmt"
|
||||
|
||||
// package scope
|
||||
const ok = true
|
||||
|
||||
// package scope
|
||||
func main() { // block scope starts
|
||||
|
||||
var hello = "Hello"
|
||||
|
||||
// hello and ok are visible here
|
||||
fmt.Println(hello, ok)
|
||||
|
||||
} // block scope ends
|
26
03-packages-and-scopes/02-scopes/02-block-scope/main.go
Normal file
26
03-packages-and-scopes/02-scopes/02-block-scope/main.go
Normal file
@@ -0,0 +1,26 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
func nope() { // block scope starts
|
||||
|
||||
// hello and ok are only visible here
|
||||
const ok = true
|
||||
var hello = "Hello"
|
||||
|
||||
_ = hello
|
||||
} // block scope ends
|
||||
|
||||
func main() { // block scope starts
|
||||
|
||||
// hello and ok are not visible here
|
||||
|
||||
// ERROR:
|
||||
// fmt.Println(hello, ok)
|
||||
|
||||
} // block scope ends
|
39
03-packages-and-scopes/02-scopes/03-nested-scope/main.go
Normal file
39
03-packages-and-scopes/02-scopes/03-nested-scope/main.go
Normal file
@@ -0,0 +1,39 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
// I didn't talk about this in a lecture
|
||||
// As a side-note, I wanted to put it here
|
||||
// Please review it.
|
||||
|
||||
var declareMeAgain = 10
|
||||
|
||||
func nested() { // block scope starts
|
||||
|
||||
// declares the same variable
|
||||
// they both can exist together
|
||||
// this one only belongs to this scope
|
||||
// package's variable is still intact
|
||||
var declareMeAgain = 5
|
||||
fmt.Println("inside nope:", declareMeAgain)
|
||||
|
||||
} // block scope ends
|
||||
|
||||
func main() { // block scope starts
|
||||
|
||||
fmt.Println("inside main:", declareMeAgain)
|
||||
|
||||
nested()
|
||||
|
||||
// package-level declareMeAgain isn't effected
|
||||
// from the change inside the nested func
|
||||
fmt.Println("inside main:", declareMeAgain)
|
||||
|
||||
} // block scope ends
|
14
03-packages-and-scopes/02-scopes/04-package-scope/bye.go
Normal file
14
03-packages-and-scopes/02-scopes/04-package-scope/bye.go
Normal file
@@ -0,0 +1,14 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func bye() {
|
||||
fmt.Println("Bye!")
|
||||
}
|
14
03-packages-and-scopes/02-scopes/04-package-scope/hey.go
Normal file
14
03-packages-and-scopes/02-scopes/04-package-scope/hey.go
Normal file
@@ -0,0 +1,14 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func hey() {
|
||||
fmt.Println("Hey!")
|
||||
}
|
38
03-packages-and-scopes/02-scopes/04-package-scope/main.go
Normal file
38
03-packages-and-scopes/02-scopes/04-package-scope/main.go
Normal file
@@ -0,0 +1,38 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println("Hello!")
|
||||
|
||||
// two files belong to the same package
|
||||
// calling `bye()` of bye.go here
|
||||
bye()
|
||||
}
|
||||
|
||||
// EXERCISE: Remove the comments from the below function
|
||||
// And analyze the error message
|
||||
|
||||
// func bye() {
|
||||
// fmt.Println("Bye!")
|
||||
// }
|
||||
|
||||
// ***** EXPLANATION *****
|
||||
//
|
||||
// ERROR: "bye" function "redeclared"
|
||||
// in "this block"
|
||||
//
|
||||
// "this block" means = "main package"
|
||||
//
|
||||
// "redeclared" means = you're using the same name
|
||||
// in the same scope again
|
||||
//
|
||||
// main package's scope is:
|
||||
// all source-code files which are in the same main package
|
Reference in New Issue
Block a user