Versuchen Sie, Yuma in der Sprache Go zu implementieren

Versuchen Sie, Yuma in Java zu implementieren (@ Nemesis) summte also Es ist komplett huckepack, aber es scheint Spaß zu machen, also werde ich versuchen, Go Auntie in Go-Sprache zu implementieren.

Implementierung

main.go


package main

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

func main() {
	fmt.Println("Es ist ein Vertrag. Schreiben Sie dort Ihren Namen.")

	stdin := bufio.NewScanner(os.Stdin)
	stdin.Scan()
	name := stdin.Text()
	fmt.Printf("Hung.%Ist es s? Es ist ein luxuriöser Name.\n", name)

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

	fmt.Printf("Von nun an heißt du%s. Wohlgemerkt,%Es ist s. Ich werde antworten, wenn ich verstehe%s!!\n", newname, newname, newname)
}

Wenn Sie eine Go-Laufzeit haben, führen Sie main.go aus und es wird funktionieren.

$ go run main.go
Es ist ein Vertrag. Schreiben Sie dort Ihren Namen.
Yamada Taro
Hung. Ist es Taro Yamada? Es ist ein luxuriöser Name.
Von nun an heißt du Berg. Es ist ein Berg. Ich werde antworten, wenn ich verstehe, Berg! !!

Codekommentar

Ich denke nicht, dass der Code so schwierig ist, wie ich erkläre, aber vorerst.

Standardausgabe

Verwenden Sie einfach das integrierte Paket fmt.

fmt.Println("Es ist ein Vertrag. Schreiben Sie dort Ihren Namen.")

Standardeingabe

Ich verwende das Paket bufio. In Go gibt es mehrere Standardeingabemethoden, und die Verwendung von fmt.Scan hat jedoch die geringste Codemenge Nicht übernommen, da keine nicht eingegebenen Rückgaben akzeptiert werden (weil ich einen Absturz ohne Eingabe reproduzieren wollte).

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

Nimm den Namen weg

Die von der Standardeingabe empfangene Zeichenfolge wird durch Teilen in ein Array konvertiert, und nur ein Zeichen wird durch Indexspezifikation unter Verwendung einer Zufallszahl extrahiert. Math / rand wird zum Erstellen von Zufallszahlen verwendet.

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

Absturz

Wenn Sie nichts in die Standardeingabe eingeben, gerät dies in Panik. Ich habe es auch bei der Hauptfamilie abgestürzt, also habe ich versucht, es zu reproduzieren. Es ist ein Fehler, dass Sie für das Argument "rand.Intn" keine 0 angeben sollten.

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

Übrigens, um zu verhindern, dass es abstürzt und keine Eingabe von nur leeren Zeichen akzeptiert, gehen Sie wie folgt vor.

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("Es ist ein Vertrag. Schreiben Sie dort Ihren Namen.")
		stdin := bufio.NewScanner(os.Stdin)
		stdin.Scan()
		name = stdin.Text()
	}
	fmt.Printf("Hung.%Ist es s? Es ist ein luxuriöser Name.\n", name)

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

	fmt.Printf("Von nun an heißt du%s. Wohlgemerkt,%Es ist s. Ich werde antworten, wenn ich verstehe%s!!\n", newname, newname, newname)
}

Der Yuma wird endlos wiederholt, bis eine Zeicheneingabe erfolgt.

$ go run main.go
Es ist ein Vertrag. Schreiben Sie dort Ihren Namen.

Es ist ein Vertrag. Schreiben Sie dort Ihren Namen.

Es ist ein Vertrag. Schreiben Sie dort Ihren Namen.

Es ist ein Vertrag. Schreiben Sie dort Ihren Namen.

Es ist ein Vertrag. Schreiben Sie dort Ihren Namen.

Recommended Posts

Versuchen Sie, Yuma in der Sprache Go zu implementieren
Lassen Sie uns Yuma in Python 3 implementieren
Hallo Welt in GO-Sprache
Versuchen Sie, Parfüm mit Go zu implementieren
Schreiben Sie einen Test in GO-Sprache + Gin
Machen Sie etwas objektorientiertes in der GO-Sprache
Java-Programmierer berührt Go-Sprache (Java-Vererbung in Go-Sprache implementieren)
Versuchen Sie, zwei Stapel in Python auf einem Array zu implementieren
Versuchen Sie, die Monte-Carlo-Methode in Python zu implementieren
Versuchen Sie, Yuma mit Brainf * ck 512-Zeilen zu implementieren (Code mit Python generieren und ausführen)
Versuchen Sie, ein Python-Modul in C-Sprache zu erstellen
Versuchen Sie, assoziativen Speicher durch Hop-Field-Netzwerk in Python zu implementieren
Versuchen Sie gRPC in Python
Funktionen der Go-Sprache
Erstellen Sie einen Webserver in der Sprache Go (net / http) (1)
Probieren Sie 9 Slices in Python aus
Gehen Sie in die Sprache, um Teil 7 C in der Sprache GO zu sehen und sich daran zu erinnern
[Go language] So erhalten Sie Terminaleingaben in Echtzeit
Einbettung der Maschinensprache in die Sprache C.
Heap-Sortierung in C-Sprache
Versuchen Sie, RBM mit Chainer zu implementieren.
Implementieren Sie den rekursiven Abschluss in Go
Versuchen Sie, XOR mit PyTorch zu implementieren
Versuchen Sie LINE Notify mit Python
go Sprachen lernen verschiedene Notizen 1
[Golang] Über den Sprachkanal Go
Versuchen Sie, eine Sprache auszuwählen
Made gomi, ein Papierkorb-Tool für rm in Go-Sprache