• GOPATH与类库复用


     

    GOPATH与类库复用

    /*
    复用自己的包时使用。
    外部类库的检索路径目录
    在目录中检索代码包
    
    */
    /*
      要想mylib包被检索到,就要将【路径】添加到GOPATH中
      想本工程使用,就添加到本工程中GOPATH
      想全局使用,就添加到全局GOPATH
    
      首先包的上一层文件夹必须叫src  也就是xuexi/src/mylib
      配置GOPATH是配置xuexi,然后会自动检索src
    【路径】 = mylib的上2级文件夹,上1级文件夹必须叫src
    
    */

     

    在当前工程(xuexi)使用mylib 包

    /*
    1 在本工程里创建src目录
    2 然后将mylib放入src目录中。
    3 在设置里将 本工程主目(xuexi)设置为 本工程变量中.
    */

    在其他工程(nuli)使用mylib 包

    /*
    1 新打开一个其他工程,全局变量信息不要修改。
    2 把mylib包复制到全局变量的src目录中,就自动识别了。
    
    */

    本工程案例,具体的代码分布展示

    /*
    注意 Nmaes 变量是全局变量,之前的names都要改为Names
    */

      xuexi/02.go

     1 package main
     2 
     3 import (
     4     "fmt"
     5     "mylib"
     6 )
     7 
     8 
     9 
    10 func main() {
    11     //招生
    12     mylib.AddMember("小王", "小红", "小张", "小许", "小明", "小曼")
    13     fmt.Println(mylib.Names)
    14 
    15     //把学生随机分配成绩 也就是考试
    16     scoreMap := mylib.TakeExam(mylib.Names...)
    17     fmt.Println(scoreMap)
    18 
    19     //显示排名
    20     mylib.ShowRanking(scoreMap)
    21 
    22 }

      xuexi/src/mylib/exam.go

     1 package mylib
     2 
     3 import (
     4     "fmt"
     5     "math/rand"
     6     "time"
     7 )
     8 
     9 //全局变量
    10 
    11 var Names []string
    12 
    13 //--包初始化函数,执行在main函数之前.
    14 func init() {
    15     fmt.Println("***包初始化***")
    16     Names = make([]string, 0)
    17 }
    18 
    19 //对成绩做降序排名  进行排序
    20 func ShowRanking(scoreMap map[string]int) {
    21 
    22     //形成名单,锁死姓名的循序,才能开始排序.
    23     names := make([]string, 0)
    24     for name, _ := range scoreMap {
    25         names = append(names, name)
    26     }
    27 
    28     /*对names 按分数的降序进行排列*/
    29     for i := 0; i < len(scoreMap)-1; i++ {
    30         //锁定第i位,将i后面的每个人(i),的分数与第i个人比较.
    31         // 将剩余的同志中,最高分数的人,调整到当前位置.
    32         for j := i + 1; j < len(names); j++ {
    33             //如果第四个人的分数比第三个人高,就互换位置.
    34             if scoreMap[names[j]] > scoreMap[names[i]] {
    35                 names[i], names[j] = names[j], names[i]
    36             }
    37 
    38         }
    39 
    40     }
    41     /*按names的顺序输出姓名和排序*/
    42     for i, name := range names {
    43         fmt.Printf("第%d名:%-6s 	 %3d
    ", i+1, name, scoreMap[name])
    44     }
    45 }
    46 
    47 
    48 //给examres考试,为每个人生成随机成绩.
    49 func TakeExam(examers ...string) (scoreMap map[string]int) {
    50 
    51     //定义出scoreMap里面是空的
    52     scoreMap = make(map[string]int)
    53 
    54     for _, name := range examers {
    55         score := GetRandomInt(100)
    56         scoreMap[name] = score
    57 
    58     }
    59     return
    60 }
    61 
    62 //生成0-n之间的随机分数
    63 func GetRandomInt(n int) int {
    64     time.Sleep(time.Nanosecond) //睡1毫秒
    65     r := rand.New(rand.NewSource(time.Now().UnixNano()))
    66     return r.Intn(n + 1)
    67 }
    68 
    69 //添加学生的函数
    70 func AddMember(newcomers ...string) {
    71     Names = append(Names, newcomers...)
    72 
    73 }

     完毕!!

  • 相关阅读:
    爱摘苹果的小明
    盗梦空间
    九九乘法表
    谁是最好的Coder
    画图
    黑色帽子
    a letter and a number
    运维开发面试题
    python 守护进程daemon
    kubernets 应用部署
  • 原文地址:https://www.cnblogs.com/chaoyangxu/p/11896197.html
Copyright © 2020-2023  润新知