Если вы передадите метод экземпляра, как в примере кода, весь экземпляр будет сериализован и передан. Любые объекты, на которые ссылается ваш foo
объект, также будут сериализованы и т. Д. Любое глобальное состояние - например, переменные уровня модуля и класса - не будет сохранено, поэтому оно будет находиться в любом состоянии, в котором эти переменные находятся в экземпляре, в котором выполняется задача.
Необходимые данные сериализуются и отправляются в очередь задач во время вызова defer
, поэтому, если это была ваша единственная ссылка на baz, эта копия baz будет немедленно собрана мусором. Однако это не остановит выполнение отложенной задачи, поскольку она создаст новый экземпляр при десериализации и выполнении задачи.