Ето пример за проблема, който имам:
package main
import "fmt"
func foo(a int, b ...int) {
fmt.Println(a,b)
}
func main() {
a := 0
aa := 1
b := []int{2,3,4}
foo(a, aa, b...)
}
Когато стартирам това, получавам грешка too many arguments in call to foo
. Предполагам, че мога да разбера защо се случва това, но това, което не ми е ясно, е как мога да го заобиколя, без да се налага да правя копие на b
с допълнителен слот в началото за aa
(което предпочитам да не правя, т.к. този код ще се изпълнява доста често и с b
е малко дълъг).
Така че въпросът ми е: Правя ли това погрешно? И ако не, какъв би бил най-ефективният начин да направя това, което се опитвам да направя?
(Освен това не мога да променя подписа на foo
).