18_defer和匿名函数结合使用.go
package main //必须
import "fmt"
func main() {
a := 10
b := 20
// defer func(a, b int) {
// fmt.Printf("a = %d, b = %d\n", a, b)
// }(a, b) //()代表调用此匿名函数, 把参数传递过去,已经先传递参数,只是没有调用
defer func(a, b int) {
fmt.Printf("a = %d, b = %d\n", a, b)
}(10, 20) //()代表调用此匿名函数, 把参数传递过去,已经先传递参数,只是没有调用
a = 111
b = 222
fmt.Printf("外部:a = %d, b = %d\n", a, b)
}
func main01() {
a := 10
b := 20
defer func() {
fmt.Printf("a = %d, b = %d\n", a, b)
}() //()代表调用此匿名函数
a = 111
b = 222
fmt.Printf("外部:a = %d, b = %d\n", a, b)
}
19_获取命令行参数.go
package main //必须
import "fmt"
import "os"
func main() {
//接收用户传递的参数,都是以字符串方式传递
list := os.Args
n := len(list)
fmt.Println("n = ", n)
//xxx.exe a b
for i := 0; i < n; i++ {
fmt.Printf("list[%d] = %s\n", i, list[i])
}
for i, data := range list {
fmt.Printf("list[%d] = %s\n", i, data)
}
}
20_局部变量.go
package main //必须
import "fmt"
func test() {
a := 10
fmt.Println("a = ", a)
}
func main() {
//定义在{}里面的变量就是局部变量,只能在{}里面有效
//执行到定义变量那句话,才开始分配空间,离开作用域自动释放
//作用域,变量其作用的范围
//a = 111
{
i := 10
fmt.Println("i = ", i)
}
//i = 111
if flag := 3; flag == 3 {
fmt.Println("flag = ", flag)
}
flag = 4
}
21_全局变量.go
package main //必须
import "fmt"
func test() {
fmt.Println("test a = ", a)
}
//定义在函数外部的变量是全局变量
//全局变量在任何地方都能使用
var a int
func main() {
a = 10
fmt.Println("a = ", a)
test()
}
22_不同作用域同名变量.go
package main //必须
import "fmt"
var a byte //全局变量
func main() {
var a int //局部变量
//1、不同作用域,允许定义同名变量
//2、使用变量的原则,就近原则
fmt.Printf("%T\n", a) //int
{
var a float32
fmt.Printf("2: %T\n", a) //float32
}
test()
}
func test() {
fmt.Printf("3: %T\n", a) //uint8, 就是byte
}
23_导入包.go
package main //必须
//忽略此包
import _ "fmt"
func main() {
}
/*
//给包名起别名
import io "fmt"
func main() {
io.Println("this is a test")
}
*/
/*
//.操作
import . "fmt" //调用函数,无需通过包名
import . "os"
func main() {
Println("this is a test")
Println("os.Args = ", Args)
}
*/
/*
//方式1
//import "fmt" //导入包,必须使用,否则编译不过
//import "os"
//方法2,常用
import (
"fmt"
"os"
)
func main() {
fmt.Println("this is a test")
fmt.Println("os.Args = ", os.Args)
}
*/
网友评论