zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Linux Shell常用shell命令
    shell ls
    [转]推荐一些不错的计算机书籍
    What does it mean when you assign [super init] to self?
    保存,读取与多任务处理
    程序媛去过的地方
    读取pcap文件,过滤非tcp包,获取IP及tcp端口信息
    IM实现联系人及联系人分组的数据库设计
    【原创】校园网用户,1个账号2个笔记本上网,Ad hoc无线连网应用
    【openfire插件开发】群组聊天中的中介者模式
  • 原文地址:https://www.cnblogs.com/pyyu/p/8037187.html
Copyright © 2011-2022 走看看