Golang基本结构之练习(day2)

笔记:

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
", 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)
}
 
main.go
package add

import (
    //_"go_dev/day2/example2/test"
)

func init() {
    Name = "hello world"
    Age = 10
}

var Name string = "xxxxx"
var Age int = 66
View Code

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)
}
main.go
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)
}
test.go
package add

import (
    _"go_dev/day2/example2/test"
)

func init() {

    Name = "hello world"
    Age = 10
}

var Name string = "xxxxx"
var Age int = 66
add.go
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")
        }
    }
}
main.go
原文地址:https://www.cnblogs.com/pyyu/p/8037187.html