code: func (v *Value) GoValue() (interface{}, error) {
  	f, err := gValueMarshalers.lookup(v)
  	if err != nil {
  		return nil, err
  	}
  
  	//No need to add finalizer because it is already done by ValueAlloc and ValueInit
  	rv, err := f(uintptr(unsafe.Pointer(v.native())))
  	return rv, err
  }
docs: // GoValue converts a Value to comparable Go type.  GoValue()
  // returns a non-nil error if the conversion was unsuccessful.  The
  // returned interface{} must be type asserted as the actual Go
  // representation of the Value.
  //
  // This function is a wrapper around the many g_value_get_*()
  // functions, depending on the type of the Value.