请教一个包导入问题,百思不得解!!!

wewin · · 667 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

项目结构如下: ``` decoder ├── config.json └── decoder.go ``` config.json 文件内容 ``` { "ServerInfo": { "Host": "127.0.0.1:8888" }, "RedisInfo": { "Host": "127.0.0.1:6379",     "MaxIdle": 16,      "MaxActive": 0,      "IdleTimeout": 300 } } ``` decoder.go 文件内容 ``` package main import (     "encoding/json"     "fmt"     "os"     "time" ) type Config struct{} type ConfigurationType struct {     ServerInfo ServerInfoType     RedisInfo RedisInfoType } type ServerInfoType struct {     Host string } type RedisInfoType struct {     Host string     MaxIdle int     MaxActive int     IdleTimeout time.Duration } var Configuration = ConfigurationType{} func (this Config) InitConfig() {     file, _ := os.Open("config.json")     defer file.Close()     decoder := json.NewDecoder(file)     Configuration = ConfigurationType{}     err := decoder.Decode(&Configuration)     if err != nil {         fmt.Println("Error: ", err)     }     fmt.Printf("Configuration: %v\n", Configuration) } func main() {     conf := Config{}     conf.InitConfig() } ``` 这种情况下我运行:`go run decoder.go` , 输出结果如下: ``` Configuration: {{127.0.0.1:8888} {127.0.0.1:6379 16 0 300ns}} ``` 但是我把这个 main 包改为 decoder 包,项目结构调整如下 ``` . ├── decoder │ ├── config.json │ └── decoder.go └── main.go ``` config.json 文件内容 ``` { "ServerInfo": { "Host": "127.0.0.1:8888" }, "RedisInfo": { "Host": "127.0.0.1:6379",     "MaxIdle": 16,      "MaxActive": 0,      "IdleTimeout": 300 } } ``` decoder.go 文件内容 ``` package decoder import (     "encoding/json"     "fmt"     "os"     "time" ) type Config struct{} type ConfigurationType struct {     ServerInfo ServerInfoType     RedisInfo RedisInfoType } type ServerInfoType struct {     Host string } type RedisInfoType struct {     Host string     MaxIdle int     MaxActive int     IdleTimeout time.Duration } var Configuration = ConfigurationType{} func (this Config) InitConfig() {     file, _ := os.Open("config.json")     defer file.Close()     decoder := json.NewDecoder(file)     Configuration = ConfigurationType{}     err := decoder.Decode(&Configuration)     if err != nil {         fmt.Println("Error: ", err)     }     fmt.Printf("Configuration: %v\n", Configuration) } ``` main.go 文件内容 ``` package main import "initTest/decoder" func main() {     t := decoder.Config{}     t.InitConfig() } ``` 测试运行 `go run main.go` 报错如下: ``` Error: invalid argument Configuration: {{} { 0 0 0s}} ``` 请问是否有人知道是什么原因?

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

667 次点击  
加入收藏 微博
4 回复  |  直到 2019-06-19 12:02:11
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传