Use a pointer to modify the original array:
func modify(arr *[3]int) {
arr[0] = 100
}
nums := [3]int{1, 2, 3}
modify(&nums)
fmt.Println(nums[0]) // 100
Go automatically dereferences array pointers. You don't need (*arr)[0]. This is convenient but slices are usually a better choice.