Cuando quiero aprender un nuevo lenguaje desarrollo un juego de series, es decir aparece una serie con un valor faltante y el jugador debe completarlo.
Uno de los requerimientos no funcionales es que se pueda agregar una serie nueva fácilmente, para cumplirlo vamos a utilizar las ventajas de go.
Empecemos desarrollo de la serie, la serie tiene como responsabilidad generarse :
func IniciarSecuencia() [4]int {
rand.Seed(time.Now().Unix())
semilla := rand.Intn(3)
switch semilla {
case 0:
return generarSecuenciaPar()
case 1:
return generarSecuenciaInpar()
default:
return generarFibonacci()
}
}
Esta función genera la serie y para eso utiliza diferentes funciones que generan diferentes tipos de secuencias : 
import (
	"math/rand"
	"time"
)
func generarSecuenciaPar() [4]int {
	var resultado [4]int
	rand.Seed(time.Now().Unix())
	semilla := rand.Intn(100)
	for i := 0; i < 4; i++ {
		resultado[i] = semilla + i*2
	}
	return resultado
}
func generarSecuenciaInpar() [4]int {
	var resultado [4]int
	rand.Seed(time.Now().Unix())
	semilla := rand.Intn(100)
	for i := 0; i < 4; i++ {
		resultado[i] = semilla + i*2 + 1
	}
	return resultado
}
func generarFibonacci() [4]int {
	var resultado [4]int
	rand.Seed(time.Now().Unix())
	semilla := rand.Intn(50)
	for i := 0; i < 4; i++ {
		if i < 2 {
			resultado[i] = semilla
		} else {
			resultado[i] = resultado[i-1] + resultado[i-2]
		}
	}
	return resultado
}
Y listo!! ahora en el main tenemos que llamar a esta función y ver si esta bien el resultado: 
package main
import (
	"example/secuencia/secuencia/model"
	"fmt"
	"os"
)
func main() {
	fmt.Println("------------- Bienvenido !! ----------------")
	exit := 'Y'
	puntaje := 0
	for exit != 'N' {
		secuencia := model.IniciarSecuencia()
		for i := 0; i < len(secuencia); i++ {
			if i != 2 {
				fmt.Print(secuencia[i])
				fmt.Print(" ")
			} else {
				fmt.Print("________  ")
			}
		}
		fmt.Println()
		fmt.Println("--------------------------")
		fmt.Print(" Faltante :")
		var nro int
		n, err := fmt.Scanf("%d\n", &nro)
		if err != nil {
			fmt.Println(n, err)
			os.Exit(n)
		}
		if nro == secuencia[2] {
			fmt.Print(" Ganaste!! ")
			puntaje++
		} else {
			fmt.Print(" Perdiste!! ")
			puntaje--
		}
		fmt.Println(" Puntaje : ", puntaje)
		fmt.Print(" Desea continuar jugando ? (Y/N) ")
		fmt.Scanf("%c\n", &exit)
	}
}
Y eso es todo a jugar se a dicho!!
Dejo el repositorio git: https://github.com/emanuelpeg/secuenciaGolang 

