# Solution: FizzBuzz in function

examples/fizzbuzz/fizzbuzz.go
```package main

import (
"fmt"
"strconv"
)

func main() {
for i:=1; i < 16; i++ {
fmt.Println(fb(i))
}
}

func fb(n int) string {
resp := ""

if n % 3 == 0 {
resp += "Fizz"
}
if n % 5 == 0 {
resp += "Buzz"
}
if resp == "" {
resp = strconv.Itoa(n)
}
return resp
}

```

examples/fizzbuzz/fizzbuzz_test.go
```package main

import (
"fmt"
"strconv"
"testing"
)

func TestRegular(t *testing.T) {
for _, n := range [...]int{1, 2, 4} {
expected := strconv.Itoa(n)
actual := fb(n)
if actual != expected {
t.Error(fmt.Sprintf("Expected '%v', Actual '%v'", expected, actual))
}

}
}

func TestFizz(t *testing.T) {
expected := "Fizz"
for _, n := range [...]int{3, 6, 9, 12, 18} {
actual := fb(n)
if actual != expected {
t.Error(fmt.Sprintf("Expected '%v', Actual '%v'", expected, actual))
}

}
}

func TestBuzz(t *testing.T) {
expected := "Buzz"
for _, n := range [...]int{5, 10, 20, 25} {
actual := fb(n)
if actual != expected {
t.Error(fmt.Sprintf("Expected '%v', Actual '%v'", expected, actual))
}

}
}

func TestFizzBuzz(t *testing.T) {
expected := "FizzBuzz"
for _, n := range [...]int{15, 30, 60} {
actual := fb(n)
if actual != expected {
t.Error(fmt.Sprintf("Expected '%v', Actual '%v'", expected, actual))
}

}
}

```