code: func (v *Object) GetProperty(name string) (interface{}, error) {
  	cstr := C.CString(name)
  	defer C.free(unsafe.Pointer(cstr))
  
  	t, err := v.GetPropertyType(name)
  	if err != nil {
  		return nil, err
  	}
  
  	p, err := ValueInit(t)
  	if err != nil {
  		return nil, errors.New("unable to allocate value")
  	}
  	C.g_object_get_property(v.GObject, (*C.gchar)(cstr), p.native())
  	return p.GoValue()
  }
docs: // GetProperty is a wrapper around g_object_get_property().