Essayez d'implémenter Yuma en langage Go

Essayez d'implémenter Yuma en Java (@ Nemesis) bourdonnait, donc C'est complètement superflu, mais cela semble amusant, alors je vais essayer d'implémenter Go Auntie en langage Go.

la mise en oeuvre

main.go


package main

import (
	"bufio"
	"fmt"
	"math/rand"
	"os"
	"strings"
	"time"
)

func main() {
	fmt.Println("C'est un contrat. Écrivez votre nom ici.")

	stdin := bufio.NewScanner(os.Stdin)
	stdin.Scan()
	name := stdin.Text()
	fmt.Printf("Hung.%Est son? C'est un nom luxueux.\n", name)

	nameArray := strings.Split(name, "")
	rand.Seed(time.Now().UnixNano())
	newname := nameArray[rand.Intn(len(nameArray))]

	fmt.Printf("A partir de maintenant, ton nom est%s. Attention,%C'est s. Je répondrai quand je comprendrai%s!!\n", newname, newname, newname)
}

Si vous avez un runtime Go, exécutez main.go et cela fonctionnera.

$ go run main.go
C'est un contrat. Écrivez votre nom ici.
Yamada Taro
Hung. Est-ce Taro Yamada? C'est un nom luxueux.
Désormais, votre nom est la montagne. C’est une montagne. Je répondrai quand je comprendrai, montagne! !!

Commentaire de code

Je ne pense pas que le code soit aussi difficile que je l'explique, mais pour le moment.

Sortie standard

Utilisez simplement le package intégré fmt.

fmt.Println("C'est un contrat. Écrivez votre nom ici.")

Entrée standard

J'utilise le package bufio. Il existe plusieurs méthodes de saisie standard dans Go, et l'utilisation de fmt.Scan a le moins de code, mais Non adopté car il n'accepte pas les retours non saisis (car je voulais reproduire un crash sans entrée).

stdin := bufio.NewScanner(os.Stdin)
stdin.Scan()
name := stdin.Text()

Enlevez le nom

La chaîne de caractères reçue de l'entrée standard est convertie en tableau par fractionnement et un seul caractère est extrait par indexation à l'aide d'un nombre aléatoire. Math / rand est utilisé pour créer des nombres aléatoires.

nameArray := strings.Split(name, "")
rand.Seed(time.Now().UnixNano())
newname := nameArray[rand.Intn(len(nameArray))]

crash

Si vous n'entrez rien dans l'entrée standard, cela paniquera. Je l'ai également écrasé sur le chef de famille, alors j'ai essayé de le reproduire. C'est une erreur que vous ne devriez pas spécifier 0 pour l'argument de rand.Intn.

panic: invalid argument to Intn

goroutine 1 [running]:
math/rand.(*Rand).Intn(0xc000058180, 0x0, 0x1188ce0)
        /usr/local/opt/go/libexec/src/math/rand/rand.go:169 +0x9c
math/rand.Intn(...)
        /usr/local/opt/go/libexec/src/math/rand/rand.go:337
main.main()
        /Users/nakaya/go/src/yubaba/main.go:22 +0x2ad
exit status 2

Soit dit en passant, pour l'empêcher de planter et de ne pas accepter la saisie de caractères vides uniquement, procédez comme suit.

main.go


package main

import (
	"bufio"
	"fmt"
	"math/rand"
	"os"
	"strings"
	"time"
)

func main() {
	var name string
	for len(strings.TrimSpace(name)) == 0 {
		fmt.Println("C'est un contrat. Écrivez votre nom ici.")
		stdin := bufio.NewScanner(os.Stdin)
		stdin.Scan()
		name = stdin.Text()
	}
	fmt.Printf("Hung.%Est son? C'est un nom luxueux.\n", name)

	nameArray := strings.Split(name, "")
	rand.Seed(time.Now().UnixNano())
	newname := nameArray[rand.Intn(len(nameArray))]

	fmt.Printf("A partir de maintenant, ton nom est%s. Attention,%C'est s. Je répondrai quand je comprendrai%s!!\n", newname, newname, newname)
}

Le Yuma boucle sans fin jusqu'à ce qu'il y ait une entrée de caractère.

$ go run main.go
C'est un contrat. Écrivez votre nom ici.

C'est un contrat. Écrivez votre nom ici.

C'est un contrat. Écrivez votre nom ici.

C'est un contrat. Écrivez votre nom ici.

C'est un contrat. Écrivez votre nom ici.

Recommended Posts

Essayez d'implémenter Yuma en langage Go
Implémentons Yuma dans Python 3
Hello World en langue GO
Essayez d'implémenter le parfum avec Go
Ecrire un test en langue GO + gin
Faites quelque chose orienté objet dans le langage GO
Le programmeur Java a touché le langage Go (implémenter l'héritage Java en langage Go)
Essayez d'implémenter deux piles en Python sur un seul tableau
Essayez d'implémenter la méthode Monte Carlo en Python
Essayez d'implémenter Yuma avec Brainf * ck 512 lignes (générer et exécuter du code avec Python)
Essayez de créer un module Python en langage C
Essayez d'implémenter la mémoire associative par hop field network en Python
Essayez gRPC en Python
Caractéristiques du langage Go
Créer un serveur Web en langage Go (net / http) (1)
Essayez 9 tranches en Python
Aller à la langue pour voir et se souvenir du langage Partie 7 C en langage GO
[Go language] Comment obtenir l'entrée du terminal en temps réel
Intégration du langage machine en langage C
Tri de tas fait en langage C
Essayez d'implémenter RBM avec chainer.
Mettre en œuvre une fermeture récursive dans Go
Essayez d'implémenter XOR avec PyTorch
Essayez LINE Notify avec Python
go Apprentissage des langues notes diverses 1
[Golang] À propos de la chaîne linguistique Go
Essayez de sélectionner une langue
Made Gomi, un outil de corbeille pour RM en langue Go