go语言编程音乐库代码

go语言编程音乐库代码,第1张

概述go语言编程书上有一些代码有误和遗漏的地方,这里就行了修改与加如了一小段代码。 ---开始,我也搜个百度,大多都是一样的,而且在remove代码块还是有些问题(不能是传name)。 好吧!!不多说了.下面展示所有的代码。 -----------------------------------------------------------------------------------------

go语言编程书上有一些代码有误和遗漏的地方,这里就行了修改与加如了一小段代码。

---开始,我也搜个百度,大多都是一样的,而且在remove代码块还是有些问题(不能是传name)。


好吧!!不多说了.下面展示所有的代码。

------------------------------------------------------------------------------------------------------

先贴入口文件.

mplayer.go

packagemainimport("bufio""fmt""os""strconv""strings""mplayer/library"//这里是目录结构哦,别放做了,src下的mplayer目录下的library目录"mplayer/mp"//src下的mplayer目录下的mp目录)funchandlelibCommands(tokens[]string){iflen(tokens)<2{fmt.Println(`Enterfollowingcommandstocontroltheplayer:libList--VIEwtheexistingmusicliblibadd<name><artist><source><type>--Addamusictothemusicliblibremove序号--RemovethespecifIEdmusicfromthelib`)return}switchtokens[1]{case"List":fmt.Println("序号MP3_ID名字作者路径类型")fori:=0;i<lib.Len();i++{e,_:=lib.Get(i)fmt.Printf("%-4d%-8s%-10s%-12s%-20s%-5s\n",i+1,e.ID,e.name,e.Artist,e.source,e.Type)//fmt.Println("",":","",e.Type)}case"add":{iflen(tokens)==6{ID++lib.Add(&library.MusicEntry{strconv.Itoa(ID),tokens[2],tokens[3],tokens[4],tokens[5]})}else{fmt.Println("USAGE:libadd<name><artist><source><type>")}}case"remove":iflen(tokens)==3{index,_:=strconv.Atoi(tokens[2])//fmt.Println(index)lib.Remove(index)fmt.Println("序号MP3_ID名字作者路径类型")fori:=0;i<lib.Len();i++{e,_:=lib.Get(i)fmt.Printf("%-4d%-8s%-10s%-12s%-20s%-5s\n",e.Type)}}else{fmt.Println("USAGE:libremove<ID>")}default:fmt.Println("Unrecognizedlibcommand:",tokens[1])}}funchandlePlayCommand(tokens[]string){iflen(tokens)!=2{fmt.Println("USAGE:play<name>")return}e:=lib.Find(tokens[1])ife==nil{fmt.Println("Themusic",tokens[1],"doesnotexist.")return}mp.Play(e.source,e.Type)}varlib*library.MusicManagervarIDint=0funcmain(){lib=library.NewMusicManager()fmt.Println(`Enterfollowingcommandstocontroltheplayer:libList--VIEwtheexistingmusicliblibadd<name><artist><source><type>--Addamusictothemusicliblibremove<序号>--RemovethespecifIEdmusicfromthelibplay<name>--PlaythespecifIEdmusicq|e--quit|exit`)r:=bufio.NewReader(os.Stdin)for{fmt.Print("Entercommand->")rawline,_,_:=r.Readline()line:=string(rawline)ifline=="q"||line=="e"{break}tokens:=strings.Split(line,"")iftokens[0]=="lib"{handlelibCommands(tokens)}elseiftokens[0]=="play"{handlePlayCommand(tokens)}else{fmt.Println("Unrecognizedcommand:",tokens[0])}}}


manager.go //在mplayer目录下的library目录下

packagelibraryimport("errors""fmt")typeMusicEntrystruct{IDstringnamestringArtiststringSourcestringTypestring}typeMusicManagerstruct{musics[]MusicEntry}funcNewMusicManager()*MusicManager{return&MusicManager{make([]MusicEntry,0)}}func(m*MusicManager)Len()int{returnlen(m.musics)}func(m*MusicManager)Get(indexint)(music*MusicEntry,errerror){ifindex<0||index>=len(m.musics){returnnil,errors.New("Indexoutofrange.")}//fmt.Println(m)return&m.musics[index],nil}func(m*MusicManager)Find(namestring)*MusicEntry{iflen(m.musics)==0{returnnil}for_,m:=rangem.musics{ifm.name==name{return&m}}returnnil}func(m*MusicManager)Add(music*MusicEntry){m.musics=append(m.musics,*music)}func(m*MusicManager)Remove(indexint)*MusicEntry{ifindex<0||index>len(m.musics){fmt.Println("请重新选择删除的序号..")returnnil}removedMusic:=&m.musics[index-1]//从数组切片中删除元素ifindex<len(m.musics){//中间元素m.musics=append(m.musics[:index-1],m.musics[index:]...)}else{//删除的是最后一个元素//fmt.Println("删除最后一个")m.musics=m.musics[:index-1]}returnremovedMusic}

mp3.go //mplayer 目录下的mp目录

packagempimport("fmt""time")typeMP3Playerstruct{statintprogressint}typeWAVPlayerstruct{statintprogressint}func(P*MP3Player)Play(sourcestring){fmt.Println("PlayingMP3music",source)p.progress=0forp.progress<100{time.Sleep(100*time.Millisecond)//假装正在播放fmt.Print(".")p.progress+=10}fmt.Println("\nFinishedplaying",source)}func(P*WAVPlayer)Play(sourcestring){fmt.Println("PlayingWAVmusic",source)}


play.go //mplayer目录下的mp目录下

packagempimport"fmt"typePlayerinterface{Play(sourcestring)}funcPlay(source,mtypestring){varpPlayerswitchmtype{case"MP3":p=&MP3Player{}case"WAV":p=&WAVPlayer{}default:fmt.Println("Unsupportedmusictype",mtype)return}p.Play(source)}



-----------------------------------------------------------------------------------------------------

如上面有所遗漏或代码有误,请留言。欢迎勘误指正。

总结

以上是内存溢出为你收集整理的go语言编程音乐库代码全部内容,希望文章能够帮你解决go语言编程音乐库代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1285578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存