我有以下有效的代码,但这里的要点是我想将一个任意长度的数组注入(inject)或插入到另一个扩展其长度的静态大小的数组中:
package main
import (
"fmt"
)
func main() {
ffmpegArguments := []string{
"-y",
"-i", "invideo",
// ffmpegAudioArguments...,
"-c:v", "copy",
"-strict", "experimental",
"outvideo",
}
var outputArguments [12]string
copy(outputArguments[0:3], ffmpegArguments[0:3])
copy(outputArguments[3:7], []string{"-i", "inaudio", "-c:a", "aac"})
copy(outputArguments[7:12], ffmpegArguments[3:8])
fmt.Printf("%#v\n", ffmpegArguments)
fmt.Printf("%#v\n", outputArguments)
}
最佳答案
谈论优雅 有点固执己见,但人们可能会想到 KISS原则。顺便说一句,您可以对 slice 使用更简单的方法,它不需要您猜测输出数组的大小:
func inject(haystack, pile []string, at int) []string {
result := haystack[:at]
result = append(result, pile...)
result = append(result, haystack[at:]...)
return result
}
然后,按如下方式重写您的代码:
ffmpegArguments := []string{
"-y",
"-i", "invideo",
"-c:v", "copy",
"-strict", "experimental",
"outvideo",
}
outputArguments := inject(ffmpegArguments, []string{"-i", "inaudio", "-c:a", "aac"}, 3)
fmt.Printf("%#v\n", ffmpegArguments)
fmt.Printf("%#v\n", outputArguments)
关于arrays - 如何优雅地将数组的一部分复制到另一个数组中或注入(inject)到另一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53646926/