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