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.
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! !!
Je ne pense pas que le code soit aussi difficile que je l'explique, mais pour le moment.
Utilisez simplement le package intégré fmt.
fmt.Println("C'est un contrat. Écrivez votre nom ici.")
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()
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))]
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