ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

GOPATH与类库复用

2019-11-20 10:56:04  阅读:277  来源: 互联网

标签:类库 GOPATH string mylib src 复用 names scoreMap name


 

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有