2.11 Go音乐播放器
Posted 俊king
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.11 Go音乐播放器相关的知识,希望对你有一定的参考价值。
2.11 Go音乐播放器
使用Go语言设计一个音乐播放器(不带GUI界面)
实现功能:
-
音乐库功能,使用者可以查看、添加和删除里面的音乐曲目;
-
播放音乐;
-
支持
MP3
和WAV
,但也能随时扩展以支持更多的音乐类型; -
退出程序。
程序在运行后进入一个循环,用于监听命令输入的状态。该程序将接受以下命令。
-
音乐库管理命令:
lib
,包括list/add/remove
命令。 -
播放管理:
play
命令,play
后带歌曲名参数。 -
退出程序:
q
命令。
设计音乐库类型
五个属性:
-
唯一的 ID;
-
音乐名;
-
艺术家名;
-
音乐位置;
-
音乐文件类型(MP3 和 WAV 等)。
/* 构建音乐类型结构体 */
type Music struct
Id string
Name string
Artist string
Source string
Type string
开始实现音乐库的管理类型模块:
/*
使用了一个数组切片作为基础存储结构,其他的操作其实都只是对这个数组切片的包装
*/
package main
import "errors"
/* 构建音乐类型结构体 */
type Music struct
Id string
Name string
Artist string
Source string
Type string
//type MusicEntry []string
/* 实现音乐库的管理类型 */
/*
使用了一个数组切片作为基础存储结构,其他的操作其实都只是对这个数组切片的包装
*/
type MusicManager struct
musics []Music
// 创建音乐库对象
func NewMusicManager() *MusicManager
return &MusicManagermake([]Music, 0)
/* 定义音乐库类型下的函数 */
// 获取音乐库类型下的函数
func (m *MusicManager) Len() int
return len(m.musics)
// 根据索引获取音乐
func (m *MusicManager) Get(index int) (music *Music, err error)
// 判断形参,手动返回错误内容
if index < 0 || index >= len(m.musics)
return nil, errors.New("索引超过音乐库下标值!")
// 返回正常的索引结果
return &m.musics[index], nil
// 根据名称查找音乐
func (m *MusicManager) Find(name string) *Music
// 判断音乐库是否为空,如果为空则直接返回空
if len(m.musics) == 0
return nil
// 循环取值对比
for _, m := range m.musics
if m.Name == name
return &m
return nil
// 添加音乐函数
func (m *MusicManager) Add(music *Music)
m.musics = append(m.musics, *music)
// 删除音乐库中音乐
func (m *MusicManager) Remove(index int) *Music