code: func ValueInit(t Type) (*Value, error) {
  	c := C._g_value_init(C.GType(t))
  	if c == nil {
  		return nil, errNilPtr
  	}
  
  	v := &Value{c}
  
  	runtime.SetFinalizer(v, (*Value).unset)
  	return v, nil
  }
docs: // ValueInit is a wrapper around g_value_init() and allocates and
  // initializes a new Value with the Type t.  A runtime finalizer is set
  // to call g_value_unset() on the underlying GValue after leaving scope.
  // ValueInit() returns a non-nil error if the allocation failed.