Adding the init() function tells the compiler that when the creature package is imported, it should run the init() function once, providing a single seed for the random number generation. This ensures that we don’t run code more than we have to. Now if we run the program, we will continue to get random results:

go run cmd/main.go
creature.go

package creature

import (
	"math/rand"
)

var creatures = []string{"shark", "jellyfish", "squid", "octopus", "dolphin"}

func Random() string {
	i := rand.Intn(len(creatures))
	return creatures[i]
}
cmd/main.go

package main

import (
	"fmt"

	"github.com/gopherguides/creature"
)

func main() {
	fmt.Println(creature.Random())
	fmt.Println(creature.Random())
	fmt.Println(creature.Random())
	fmt.Println(creature.Random())
}
creature/creature.go

package creature

import (
	"math/rand"
	"time"
)

var creatures = []string{"shark", "jellyfish", "squid", "octopus", "dolphin"}

func Random() string {
	rand.Seed(time.Now().UnixNano())
	i := rand.Intn(len(creatures))
	return creatures[i]
}
Since we want the creature package to handle the random functionality, open up this file:

nano creature/creature.go
To fix this, we can use an init() function. Let’s update the creature.go file:

nano creature/creature.go
In the cmd directory, create a file named go.mod:

nano cmd/go.mod
Save and close the file. Next, create a go.mod file in the creature directory:

nano creature/go.mod
Inside the creature folder, create a file called creature.go:

nano creature/creature.go
Inside the cmd folder, create a file called main.go:

nano cmd/main.go

Recommend

Understanding init in Go Initializing Packages on Import

Understanding init in Go Declaring init()

Understanding init in Go Prerequisites

Configuración inicial para servidores con CentOS 8 Paso 5: Habilitar el acceso externo para su usuario normal Si en la cuenta root se utiliza la autenticación con clave SSH

Configuración inicial para servidores con CentOS 8 Paso 5: Habilitar el acceso externo para su usuario normal Si en la cuenta root se utiliza la autenticación con contraseña

Configuración inicial para servidores con CentOS 8 Paso 4: Configurar un firewall básico

Configuración inicial para servidores con CentOS 8 Paso 3: Conceder privilegios administrativos

Configuración inicial para servidores con CentOS 8 Paso 2: Crear un nuevo usuario

Configuración inicial para servidores con CentOS 8 Paso 1: Iniciar sesión como root

How To Set Up Jupyter Notebook for Python 3 on Ubuntu 22.04 Step 4 — Using Jupyter Notebook

How To Set Up Jupyter Notebook for Python 3 on Ubuntu 22.04 Step 3 — Running Jupyter Notebook

How To Set Up Jupyter Notebook for Python 3 on Ubuntu 22.04 Step 2 (Optional) — Using SSH Tunneling to Connect to a Server Installation SSH Tunneling

How To Set Up Jupyter Notebook for Python 3 on Ubuntu 22.04 Step 1 — Installing Jupyter Notebook

Comment sécuriser Nginx avec Let's Encrypt sur Ubuntu 20.04 Étape 5 — Verification du renouvellement automatique de Certbot

Comment sécuriser Nginx avec Let's Encrypt sur Ubuntu 20.04 Étape 4 — Obtention d’un certificat SSL

Comment sécuriser Nginx avec Let's Encrypt sur Ubuntu 20.04 Étape 3 — Autorisation du HTTPS à travers le pare-feu

Comment sécuriser Nginx avec Let's Encrypt sur Ubuntu 20.04 Étape 2 — Confirmation de la configuration de Nginx

Comment sécuriser Nginx avec Let's Encrypt sur Ubuntu 20.04 Étape 1 — Installation de Certbot

Cómo instalar Nginx en Ubuntu 20.04 Paso 5: Configurar bloques de servidor (recomendado)

Cómo instalar Nginx en Ubuntu 20.04 Paso 4: Administrar el proceso de Nginx

Cómo instalar Nginx en Ubuntu 20.04 Paso 3: Comprobar su servidor web

Cómo instalar Nginx en Ubuntu 20.04 Paso 2: Aplicar ajustes al firewall

Cómo instalar Nginx en Ubuntu 20.04 Paso 1: Instalar Nginx

Definir métodos en Go Receptores de punteros e interfaces

Definir métodos en Go Receptores de punteros

Definir métodos en Go Interfaces