其他分享
首页 > 其他分享> > GOPATH与类库复用

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 \t %3d\n", 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 }

 

 

 

 

 

 完毕!!

 

 

标签:类库,GOPATH,string,mylib,src,复用,names,scoreMap,name
来源: https://www.cnblogs.com/chaoyangxu/p/11896197.html