2 :
:
=
: = vars ( var) ( ), :
package main
import (
"fmt"
)
func main() {
var u1 uint32
u1 = 32
var u2 uint32 = 32
u3 := uint32(32)
fmt.Println(u1, u2, u3)
u3 = 20
fmt.Println(u1, u2, u3)
u3, str4 := 100, "str"
fmt.Println(u1, u2, u3, str4)
}
second part:
The identifier declared in the block can be updated in the inner block.
There are 4 different working samples for the scope and shadowing variables:
an easy way to limit the scope of variables:
package main
import "fmt"
func main() {
i := 1
j := 2
{
i := "hi"
j++
fmt.Println(i, j)
}
fmt.Println(i, j)
}
scope of variable restriction using function calls:
package main
import "fmt"
func fun(i int, j *int) {
i++
*j++
fmt.Println(i, *j)
}
func main() {
i := 10
j := 20
fun(i, &j)
fmt.Println(i, j)
}
using short instructions for internal operators:
package main
import "fmt"
func main() {
i := 10
j := 4
for i := 'a'; i < 'b'; i++ {
fmt.Println(i, j)
}
fmt.Println(i, j)
if i := "test"; len(i) == j {
fmt.Println(i, j)
} else {
fmt.Println(i, j)
}
fmt.Println(i, j)
}
Global Varnish Shading:
package main
import "fmt"
var i int = 1
func main() {
j := 2
fmt.Println(i, j)
i := 10
fmt.Println(i, j)
fun(i, j)
}
func fun(i, j int) {
fmt.Println(i, j)
}