我正在尝试将int转换为字符串。为此,我需要(int, error = strconv.Atoi(string)
但是由于某种原因,该错误将成为未解决的参考。
如果我将=
更改为:=
,就像这样(klantnummerInt, err := strconv.Atoi(klantnummerString)
),那么我不会得到此错误。但是后来我遇到了另一个问题。
因为在for循环之后,我再次需要int(klantnummerInt)
。但是我无法获得它,因为它已在for循环中定义,并且无法在for循环之外访问。
我还尝试将代码放入switch语句中,但是如果这样做,则会出现以下错误:
panic:sql:预期0个参数,得到1
func main() {
scanner := bufio.NewScanner(os.Stdin)
var klant Klant
var klantnummerString string
var klantnummerInt int
var keuze string
for {
fmt.Println("voer het klantnummer in")
fmt.Println("")
scanner.Scan()
klantnummerString = scanner.Text()
klantnummerInt, err = strconv.Atoi(klantnummerString)
if err != nil {
fmt.Println("Geen geldig Klantnummer ingevoerd!")
fmt.Println()
} else {
klant = klantnummerControleren(klantnummerInt)
if klant.Klantnummer == 0 {
fmt.Println()
fmt.Println("Geen klant met klantnummer", klantnummerInt, " aanwezig")
fmt.Println()
} else if klant.Klantnummer == klantnummerInt {
fmt.Println("Wilt u een bestelling aanmaken voor deze klant?")
fmt.Println(klant.Klantnummer, klant.Voornaam, klant.Achternaam)
fmt.Println("")
fmt.Println("[JA]")
fmt.Println("[NEE]")
fmt.Println("")
scanner.Scan()
keuze = strings.ToUpper(scanner.Text())
if keuze == "" {
fmt.Println("Maak een keuze!")
continue
} else if keuze == "JA" {
fmt.Println("")
fmt.Println("Uw keuze is JA")
} else {
if keuze != "JA" {
fmt.Println("")
fmt.Println("Uw keuze is NEE")
continue
}
}
break
}
}
}
klant = klantGegevens(klantnummerInt)
fmt.Println(klant.Leeftijd)
// begin hier
}
func klantnummerControleren(nummer int) Klant {
db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/vitaintellectdb")
checkErr(err)
queryKlantnummer := "SELECT klantnummer, voornaam, naam FROM klant WHERE klantnummer = ?"
rows, err := db.Query(queryKlantnummer, nummer)
checkErr(err)
var klant Klant
for rows.Next() {
err := rows.Scan(&klant.Klantnummer, &klant.Voornaam, &klant.Achternaam)
checkErr(err)
}
rows.Close()
return klant
}
func checkErr(err error) {
if err != nil {
panic(err)
}
}
type Klant struct {
Klantnummer int
Voornaam string
Achternaam string
}
如果err不再是无法解决的引用,那就太好了。这样可以解决问题。
如果在for循环中使用var klantnummer,那么我将可以在func主程序中访问它。太棒了。