package tasks const ( TaskTypeDownload = iota TaskTypeFetch = iota TaskTypeMkDir = iota ) type Task struct { Type int8 Name string Failed bool Arguments map[string]string } func TaskPop(taskList []Task) (Task, []Task) { var result Task // https://github.com/golang/go/wiki/SliceTricks result, taskList = taskList[0], taskList[1:] return result, taskList } func TaskPush(taskList []Task, task Task) []Task { return append(taskList, task) }