Question: In Golang, `http.NewRequest` has a specification like this:

```
func NewRequest(method, urlStr string, body io.Reader) (*Request, error)

```

However, I can pass `nil` as the `body` option if I don't want to pass the `body` to an `io.Reader` object, like this:

```
req, err := http.NewRequest("GET", "http://www.blahblah.org", nil)

```

How do I implement this functionality in my code? I have a function that I want to pass an optional string value so that it can page through API results however if I pass a `nil` to the string input I get this:

> 
> ./snippets.go:32: cannot convert nil to type string
> 
> 
> 

The parameters for my function look like this:

```
func getChallenges(after string) ([]challenge, string, error)

```

Answer: 
Maybe wrap it in a `struct`?

```golang
type NilableString struct {
    value string;
}

```
You can use reflect.
In fact `io.Reader` is a interface.

So you can define signature like `func getChallenges(after interface{}) ([]challenge, string, error)`

interface{} is a empty interface, that is interface for anything.

But I suggest you use syntax `args...` to pass slice , refer to `fmt.Printf` implementation for usage, because if you pass no string the slice len is 0 and 
this will avoid the reflect which I think too heavy for your function.