ufm: (Default)
[personal profile] ufm

func tt() (int, int) {
return 1,2
}

func cc(a...interface{}) {
for p, x := range a {
fmt.Printf("%d %#v \n", p, x)
}
return
}

Если написать так:
cc(tt()) — то всё нормально, оно скомпилируется и выведет две строчки.

А если вот так:

cc(1,tt()) — то оно даже не скомпилируется, с диагностикой multiple-value tt() in single-value context

Ну девочка, ну ёб твою мать.

Originally published at U.F.M's Homepage. You can comment here or there.

(no subject)

Date: 2014-04-18 22:11 (UTC)
From: [identity profile] http://users.livejournal.com/mak_/
а что не так-то? cc берет 1 аргумент или два?

(no subject)

Date: 2014-04-18 22:30 (UTC)
From: [identity profile] ufm.livejournal.com
tt возвращает два значения.
cc берет переменное число аргументов (от 0 и более) любого типа.

(no subject)

Date: 2014-04-18 22:33 (UTC)
From: [identity profile] http://users.livejournal.com/mak_/
бррр... может не надо на таком языке писать?

(no subject)

Date: 2014-04-19 09:49 (UTC)
From: [identity profile] dil.livejournal.com
Подозреваю, что cc хочет произвольное число аргументов, но скалярных. А tt возвращает список из двух элементов. И склеить его в один общий список с ещё одним скаляром 1 компилятор не могёт.

(no subject)

Date: 2014-04-19 13:55 (UTC)
From: [identity profile] ufm.livejournal.com
Надо будет на каком нибудь форуме гуру-разработчиков голанга народ попытать. Потому что ну явно странное поведение.