her*_*n43 3 compiler-errors go
我有以下函数给我“声明变量但未使用”错误:
type Comparison struct {
Left []byte
Right []byte
Name string
}
func img(w http.ResponseWriter, r *http.Request, c appengine.Context, u *user.User) {
key := datastore.NewKey("Comparison", r.FormValue("id"), 0, nil)
side := r.FormValue("side")
comparison := new(Comparison)
err := datastore.Get(c, key, comparison)
check(err)
if( side == "left"){
m, _, err := image.Decode(bytes.NewBuffer(comparison.Left))
} else {
m, _, err := image.Decode(bytes.NewBuffer(comparison.Right))
}
check(err)
w.Header().Set("Content-type", "image/jpeg")
jpeg.Encode(w, m, nil)
}
Run Code Online (Sandbox Code Playgroud)
它给了我以下错误:
dpcompare.go:171: m declared and not used
dpcompare.go:171: err declared and not used
dpcompare.go:173: m declared and not used
dpcompare.go:173: err declared and not used
dpcompare.go:178: undefined: m
dpcompare.go:185: key declared and not used
Run Code Online (Sandbox Code Playgroud)
事情是m、err、 和key都在使用。我无法理解为什么编译器认为你不是。
正如@kostix所说,m是本地的if. 试试这个代码
type Comparison struct {
Left []byte
Right []byte
Name string
}
func img(w http.ResponseWriter, r *http.Request, c appengine.Context, u *user.User) {
key := datastore.NewKey("Comparison", r.FormValue("id"), 0, nil)
side := r.FormValue("side")
comparison := new(Comparison)
err := datastore.Get(c, key, comparison)
check(err)
// NOTE! now m is in the function's scope
var m Image
if( side == "left"){
m, _, err = image.Decode(bytes.NewBuffer(comparison.Left))
} else {
m, _, err = image.Decode(bytes.NewBuffer(comparison.Right))
}
check(err)
w.Header().Set("Content-type", "image/jpeg")
jpeg.Encode(w, m, nil)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7331 次 |
| 最近记录: |