Call by value gives a function its own copy of each argument’s value. In Go, this choice is explicit: a function can receive either a value such as Result or a pointer such as *Result. section 6.3.3
Passing Result values is useful when:
- The function does not need to mutate the result. section 6.3.3
- Independent goroutines should work with separate copies instead of shared state. section 6.3.3
- Large result streams make pointer allocation and garbage-collector tracking costly. section 6.3.3
Results through a synchronous API
Send returns a Result, SendN passes Result values to yield, and Summarize receives Results while iterating over each Result. These operations copy values rather than sharing pointers, supporting predictable processing of performance measurements. section 6.3.3


