Variable nicht deklariert ist, innerhalb einer if..else-Anweisung
Ich bin gerade angefangen zu lernen, gehen Sie lang, und ich bin verwirrt über das deklarieren von Variablen in go lang
beispielsweise habe ich erklären req
, er
innerhalb der if...else-Anweisung.
if strings.EqualFold(r.Method, "GET") || strings.EqualFold(r.Method, "") {
req, er := http.NewRequest(r.Method, r.Uri, b)
} else {
req, er := http.NewRequest(r.Method, r.Uri, b)
}
if er != nil {
//we couldn't parse the URL.
return nil, &Error{Err: er}
}
//add headers to the request
req.Host = r.Host
req.Header.Add("User-Agent", r.UserAgent)
req.Header.Add("Content-Type", r.ContentType)
req.Header.Add("Accept", r.Accept)
if r.headers != nil {
for _, header := range r.headers {
req.Header.Add(header.name, header.value)
}
}
Aber ich habe Fehler vom terminal
./goreq.go:127: req declared and not used
./goreq.go:127: er declared and not used
./goreq.go:129: req declared and not used
./goreq.go:129: er declared and not used
scheint, wie alles, was ich erklärt, innerhalb der If-Anweisung nicht funktioniert... Wie kann ich es gelöst?
- Ich weiß nicht viel über
go
, aber es scheint, dass, wenn Sie erklärenreq
under
vor der if-Anweisung, und weisen Sie im inneren der if-Anweisung, dann die Warnungen (werden Sie Warnungen oder tatsächlich Fehler?) Weggehen sollte. - Im Gehen, es ist idiomatisch, um den Namen des Fehler-Ergebnis
err
eher alser
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil Variablen sind nur in dem Umfang, in dem Sie deklariert sind:
spielen gehen
Den Unterschied zwischen
=
und:=
ist, dass=
ist nur die Zuordnung und:=
ist die syntax für die Deklaration von Variablen und ZuweisungDiese:
ist äquivalent zu:
Was Sie wahrscheinlich wollen, ist:
if a,err:=xxx();err!=nil {return err} a.yyy()
Dies ist, weil Sie erklärt haben, die Variablen
req
under
innerhalb derif else
Zustand und versuchen, es außerhalb des Bereichs (der Bereich ist nur dieif
undelse
innerhalb dessen Sie deklariert sind).Müssen Sie erklären
er
undreq
außerhalb derif else