funcpermute(nums []int)[][]int{
ret :=make([][]int,0)iflen(nums)==0{return ret
}
tmpRet :=make([]int,0)
ret =permuteBackTracking(tmpRet, nums, ret)return ret
}funcpermuteBackTracking(tmpRet []int, nums []int, ret [][]int)[][]int{iflen(nums)==0{
ret =append(ret, tmpRet)return ret
}for index, num :=range nums{
newRet :=make([]int,0)
newRet =append(newRet, tmpRet...)
newRet =append(newRet, num)
newNums :=make([]int,0)
newNums =append(newNums, nums...)
newNums =append(newNums[0:index], newNums[index+1:]...)
ret =permuteBackTracking(newRet, newNums, ret)}return ret
}