我試圖運行一個程式,該程式從用戶輸入中創建了一個預定義結構的新實體。
該結構由 3 個欄位型別字串組成。目標是讓用戶將字串輸入掃描儀,創建一個新的、唯一的結構實體,使用輸入作為它的值。該程式將處于回圈中,允許用戶創建結構的多個實體。
在呈現的代碼中,有 2 種結構型別;船和汽車。第一個字串輸入將指示選擇創建哪種型別的結構,接下來的 3 個字串將用于填充結構值。
package main
import(
"fmt"
"bufio"
"os"
)
type Boat struct {
name string
color string
design string
}
type Car struct {
name string
color string
design string
}
func main() {
TempBoat := Boat{"gerrard","red","speed"}
TempCar := Car{"conroy","blue","cruiser"}
/* I was using a template that would then be filled by the user, but
this only allows for one instance that would continue to be
overwritten. */
scanner := bufio.NewScanner(os.Stdin)
for {
if scanner.Scan() {
userIn := scanner.Text()
scanMain := strings.Fields(userIn)
Scan0 := scanMain[0]
Scan1 := scanMain[1]
Scan2 := scanMain[2]
Scan3 := scanMain[3]
if Scan0 == "car" {
TempCar.name = Scan1
TempCar.color = Scan2
TempCar.design = Scan3
} else if Scan0 == "boat" {
TempBoat.name = Scan1
TempBoat.name = Scan2
TempBoat.name = Scan3
} else {
fmt.Println("Invalid Input. Try Again.")
}
}
}
}
uj5u.com熱心網友回復:
您并沒有真正指定要對正在讀取的值做什么,所以我只是將它們放入一個切片中以安全保存。
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
type Boat struct {
name string
color string
design string
}
type Car struct {
name string
color string
design string
}
func main() {
var Boats = []Boat{}
var Cars = []Car{}
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
userIn := scanner.Text()
scanMain := strings.Fields(userIn)
if len(scanMain) == 0 {
break
}
if len(scanMain) != 4 {
fmt.Println("Invalid Input. Try Again.")
}
Scan0 := scanMain[0]
Scan1 := scanMain[1]
Scan2 := scanMain[2]
Scan3 := scanMain[3]
if Scan0 == "car" {
Cars = append(Cars, Car{Scan1, Scan2, Scan3})
} else if Scan0 == "boat" {
Boats = append(Boats, Boat{Scan1, Scan2, Scan3})
} else {
fmt.Println("Invalid Input. Try Again.")
}
}
fmt.Println("Boats:", Boats)
fmt.Println("Cars:", Cars)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/522792.html
標籤:去输入结构产生
