2016-02-17 3 views

ответ

10

У вас есть три вещи в этом заявлении, которые отличаются друг от друга, и все они работают вместе.

  • return возвращает значение из функции
  • <-reply считывает значение из канала имени ответ
  • var.(type) утверждает интерфейс содержит этот тип.

Поэтому, ставя их вместе, вы читаете значение интерфейса из канала ответа, утверждая, что это значение является целым числом, а затем возвращаете это целочисленное значение.

9

The Go Programming Language Specification

Receive operator

Для операнда ч канального типа, значение приема операции < -СН это значение, полученное из канала гл. Направление канала должно разрешать операции приема, а тип операции приема - это тип элемента канала. Выражение блокируется до значения . Получение с нулевого канала блокирует навсегда. A операция приема по замкнутому каналу всегда может начинаться немедленно, , давая нулевое значение типа элемента после того, как все ранее отправленные значения были получены.

v1 := <-ch 
v2 = <-ch 
f(<-ch) 
<-strobe // wait until clock pulse and discard received value 

Приемный выражение, используемое в назначении или инициализации специальной формы

x, ok = <-ch 
x, ok := <-ch 
var x, ok = <-ch 

дает дополнительный логический результат нетипизированный отчетности удалось ли связи. Значение ok является истинным, если полученное значение было отправлено успешной передачей на канал или false , если это нулевое значение, сгенерированное, потому что канал закрыт и пуст.

Type assertions

Для выражения х типа интерфейса и типа Т, первичного выражения

x.(T)

утверждает, что х не ноль и что значение, сохраненное в й имеет типа T. Обозначение x. (T) называется утверждением типа.

Если утверждение типа имеет значение, значение выражения представляет собой значение , хранящееся в x, а его тип - T. Если утверждение типа ложно, происходит паника во время выполнения. Другими словами, хотя динамический тип x известен только во время выполнения, тип x. (T) известен как T в правильной программе .

Return statements

«Возвращение» Заявление в функции F завершает выполнение F, и необязательно содержит одно или несколько значений результата. Любые функции , отложенные F, выполняются до того, как F вернется к своему вызывающему абоненту.

Для return (<-reply).(int),

<-reply принимает значение от канала reply.

(<-reply).(int) утверждает, что значение, полученное от канала reply, относится к типу int.

return (<-reply).(int) возвращает значение int, полученное от канала reply, и прекращает выполнение функции или метода.

Смежные вопросы