背景
- 语言:Go
- 事件:连接Elasticsearch报错
- 详情如下:
var client *elastic.Client
var host = "http://192.168.191.128:9200/"
func init() {
errorlog := log.New(os.Stdout, "APP", log.LstdFlags)
//var err error
client, err := elastic.NewClient(elastic.SetErrorLog(errorlog), elastic.SetURL(host))
if err != nil {
panic(err)
}
}
原因
由于
client
定义在函数外,赋值时使用了:=
(因为err未定义)。
所以导致新建了client
,覆盖了外部的client
。
运行完init后,在其他函数中得到的client
就是nil了。
验证
package main
import (
"fmt"
"strconv"
)
var a int
func Test(){
a,err:=strconv.Atoi("11")
if err != nil{
panic(err)
}
fmt.Printf("Test()中 a=%d\n",a)
}
func main() {
Test()
fmt.Printf("main()中 a=%d\n",a)
}
输出:
Test()中 a=11
main()中 a=0
得出结论
先定义再使用err
,不使用:=