1. 任何一个代码文件隶属于一个包
2. import 关键字,引用其他包:
import(“fmt”)
import(“os”)
通常习惯写成:
import (
“fmt”
“os”
)
3. golang可执行程序,package main,
并且有且只有一个main入口函数
4. 包中函数调用:
a. 同一个包中函数,直接调用
b. 不同包中函数,通过包名+点+
函数名进行调用
5. 包访问控制规则:
大写意味着这个函数/变量是可导出的
小写意味着这个函数/变量是私有的,
包外部不能访问
package main
/*
算出结果是:
0+10=10
1+9=10
2+8=10
3+7=10
4+6=10
5+5=10
6+4=10
7+3=10
8+2=10
9+1=10
10+0=10
*/
import "fmt"
func list(n int) {
for i := 0; i <= n; i++ {
fmt.Printf("%d+%d=%d\n", i, n-i, n)
}
}
func main() {
list(10)
}
2. 一个程序包含两个包add和main,其中add包中有两个变量:Name和age。请问main 包中如何访问Name和age?
package main
import (
//包别名的用法 a
"fmt"
a "go_dev/day2/example2/add"
)
func main() {
fmt.Println("Name=:", a.Name)
//add.age是小写 私有变量,所以找不到
fmt.Println("age=:", a.Age)
}
package add
import (
//_"go_dev/day2/example2/test"
)
func init() {
Name = "hello world"
Age = 10
}
var Name string = "xxxxx"
var Age int = 66
3. 包别名的应用,开发一个程序,使用包别名来访问包中的函数?
答案同2题
4. 每个源文件都可以包含一个init函数,这个init函数自动被go运行框架调用。开发一个程序 演示这个功能?
目录结构如图:
package main
import (
//包别名的用法 a
"fmt"
a "go_dev/day2/example2/add"
)
func main() {
//5 打印add中的
fmt.Println("Name=:", a.Name)
//add.age是小写 私有变量,所以找不到
//6
fmt.Println("age=:", a.Age)
}
package test
import "fmt"
var Name string = "This is test package"
var Age int = 1000
func init() {
//1
fmt.Println("this is a test,init")
//2
fmt.Println("test.package.Name=", Name)
//3
fmt.Println("test.package.Age=", Age)
Age=10
//4
fmt.Println("test.package.age=",Age)
}
package add
import (
_"go_dev/day2/example2/test"
)
func init() {
Name = "hello world"
Age = 10
}
var Name string = "xxxxx"
var Age int = 66
6. 定义两个常量Man=1和Female=2,获取当前时间的秒数,如果能被Female整除,则
在终端打印female,否则打印man。
Second := time.Now().Unix()
package main
import (
"fmt"
"time"
)
const (
Man = iota + 1
Female
)
/*
6. 定义两个常量Man=1和Female=2,获取当前时间的秒数,如果能被Female整除,则
在终端打印female,否则打印man。
Second := time.Now().Unix()
*/
func main() {
//for 就是个死循环
for {
time.Sleep(100000 * time.Microsecond)
second := time.Now().Unix()
if second%Female == 0 {
fmt.Println("female")
} else {
fmt.Println("man")
}
}
}