# Difference Between workflow.ExecuteActivity() and workflow.ExecuteActivity() under a workflow.GO()

**URL:** <https://community.temporal.io/t/difference-between-workflow-executeactivity-and-workflow-executeactivity-under-a-workflow-go/10823>\
**Category:** Community Support\
**Tags:** go-sdk\
**Created:** [January 28, 2024, 1:18pm UTC](https://community.temporal.io/t/difference-between-workflow-executeactivity-and-workflow-executeactivity-under-a-workflow-go/10823 "2024-01-28T13:18:55Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Pallav](https://avatars.discourse-cdn.com/v4/letter/p/edb3f5/32.png) [@Pallav](https://community.temporal.io/u/Pallav)\
**Post date:** [January 28, 2024, 1:18pm UTC](https://community.temporal.io/t/difference-between-workflow-executeactivity-and-workflow-executeactivity-under-a-workflow-go/10823/1 "2024-01-28T13:18:55Z")

</div>

What is the difference between workflow.ExecuteActivity() and using same inside a workflow.Go block?  
From what i know `workflow.ExecuteActivity()` returns a future so this asynchronous.  
And workflow.Go() block will also make activity as asynchronous?

```auto
for i := 0; i < 5000; i++ {
		workflow.Go(ctx, func(gCtx workflow.Context) {
			err := workflow.ExecuteActivity(gCtx, "CreateBulkOffers", input).Get(ctx, nil)
			if err != nil {
				// accumulate input records
			}
		})
	}

	// send notification
	for i := 0; i < 500; i++ {
		workflow.ExecuteActivity(ctx, "SendNotification", input)
	}

```

---

<div class="post-metadata">

**Author:** ![maxim](https://sea2.discourse-cdn.com/flex016/user_avatar/community.temporal.io/maxim/32/8_2.png) [@maxim](https://community.temporal.io/u/maxim)\
**Post date:** [January 29, 2024, 10:52pm UTC](https://community.temporal.io/t/difference-between-workflow-executeactivity-and-workflow-executeactivity-under-a-workflow-go/10823/2 "2024-01-29T22:52:59Z")

</div>

workflow.Go just adds complexity here without any benefit.
