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.
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! !!
Ich denke nicht, dass der Code so schwierig ist, wie ich erkläre, aber vorerst.
Verwenden Sie einfach das integrierte Paket fmt.
fmt.Println("Es ist ein Vertrag. Schreiben Sie dort Ihren Namen.")
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()
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))]
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