Ваша функция объявляет 3 типа возвращаемых данных, но в представленном коде нет операторов return
.
Вы должны либо использовать оператор return
, чтобы указать, какие значения вы хотите вернуть (на всех возможных путях возврата), например ::
func getQueue() (*amqp.Connection, *amqp.Channel, *amqp.Queue) {
conn, err := amqp.Dial("amqp://ayman@localhost:5672")
fallOnError(err, "Fail to connect")
ch, err := conn.Channel()
fallOnError(err, "Fail to open channel")
q, err := ch.QueueDeclare("hello",
false, //durable
false, //autoDelete
false, //exclusive
false, //noWait
nil) //args
fallOnError(err, "Fail to delare a queue")
return conn, ch, q
}
Или вы должны использовать именованные параметры результата, и тогда вы можете иметь «голый» оператор return
(но вы все равно должны иметь return
), например ::
func getQueue() (conn *amqp.Connection, ch *amqp.Channel, q *amqp.Queue) {
conn, err = amqp.Dial("amqp://ayman@localhost:5672")
fallOnError(err, "Fail to connect")
ch, err = conn.Channel()
fallOnError(err, "Fail to open channel")
q, err = ch.QueueDeclare("hello",
false, //durable
false, //autoDelete
false, //exclusive
false, //noWait
nil) //args
fallOnError(err, "Fail to delare a queue")
return
}
Если вы видели видео с этим объявлением функции и без оператора возврата, этот код также недействителен. Это не зависит от версии Go или ОС.