internal/dic/dic.go
func Load(path string) (d *Dic, err error) {
	d = new(Dic)
	r, err := zip.OpenReader(path)
	if err != nil {
		return d, err
	}
	defer r.Close()

	for _, f := range r.File {
		if err = func() error {
			rc, e := f.Open()
			if e != nil {
				return e
			}
			defer rc.Close()
			switch f.Name {
			case "morph.dic":
				if e = d.loadMorphDicPart(rc); e != nil {
					return e
				}
			case "pos.dic":
				if e = d.loadPOSDicPart(rc); e != nil {
					return e
				}
			case "content.dic":
				if e = d.loadContentDicPart(rc); e != nil {
					return e
				}
			case "index.dic":
				if e = d.loadIndexDicPart(rc); e != nil {
					return e
				}
			case "connection.dic":
				if e = d.loadConnectionDicPart(rc); e != nil {
					return e
				}
			case "chardef.dic":
				if e = d.loadCharDefDicPart(rc); e != nil {
					return e
				}
			case "unk.dic":
				if e = d.loadUnkDicPart(rc); e != nil {
					return e
				}
			}
			return nil
		}(); err != nil {
			return
		}
	}
	return
}
func Load(path string) (d *Dic, err error) {
	d = new(Dic)
	r, err := zip.OpenReader(path)
	if err != nil {
		return d, err
	}
	defer r.Close()

	for _, f := range r.File {
		if err = func() error {
			rc, e := f.Open()
			if e != nil {
				return e
			}
			defer rc.Close()
			switch f.Name {
			case "morph.dic":
				if e = d.loadMorphDicPart(rc); e != nil {
					return e
				}
			case "pos.dic":
				if e = d.loadPOSDicPart(rc); e != nil {
					return e
				}
			case "content.dic":
				if e = d.loadContentDicPart(rc); e != nil {
					return e
				}
			case "index.dic":
				if e = d.loadIndexDicPart(rc); e != nil {
					return e
				}
			case "connection.dic":
				if e = d.loadConnectionDicPart(rc); e != nil {
					return e
				}
			case "chardef.dic":
				if e = d.loadCharDefDicPart(rc); e != nil {
					return e
				}
			case "unk.dic":
				if e = d.loadUnkDicPart(rc); e != nil {
					return e
				}
			}
			return nil
		}(); err != nil {
			return
		}
	}
	return
}
// Load loads a dictionary from a file.