title: Exported and Unexported fields in Go Language
body: <p>I have a function in Go, the return value of which I hope to encode using gob. The return value is a struct pointer. However even though I do understand what exported variables are, I am not quite sure how to get it working.</p>
  
  <p>Here is what my function is like</p>
  
  <pre><code>fun loadXYZ(root *structABC) *structABC{
      const once = "stateData.bin"
      rd, errr := ioutil.ReadFile(once)
      if errr!=nil{
  
          //Do some computation and store in "root"
  
          buf := &amp;bytes.Buffer{}
          errr = gob.NewEncoder(buf).Encode(root)
          if errr != nil {
              panic(errr)
          }
          errr = ioutil.WriteFile(once, buf.Bytes(), 0666)
          if errr != nil {
              panic(errr)
          }
          return root
      }
      var d *structABC
      errr = gob.NewDecoder(bytes.NewReader(rd)).Decode(&amp;d)
      if errr != nil {
           panic(errr)
      }
      return d
  }
  </code></pre>
  
  <p>This is the error I get</p>
  
  <pre><code>panic: gob: type main.stateNode has no exported fields
  </code></pre>
  
  <p>I know why the error is occurring. But can someone help me solve it?</p>