### Function

# GLib Variant new

since: 2.24

#### Declaration [src]

    GVariant*
    g_variant_new (
      const gchar* format_string,
      ...
    )

#### Description [src]

Creates a new `GVariant` instance.

Think of this function as an analogue to g_strdup_printf().

The type of the created instance and the arguments that are expected by this function are determined by `format_string`. See the section on GVariant format strings. Please note that the syntax of the format string is very likely to be extended in the future.

The first character of the format string must not be ‘*’ ‘?’ ‘@’ or ‘r’; in essence, a new `GVariant` must always be constructed by this function (and not merely passed through it unmodified).

Note that the arguments must be of the correct width for their types specified in `format_string`. This can be achieved by casting them. See the GVariant varargs documentation.

    MyFlags some_flags = FLAG_ONE | FLAG_TWO;
    const gchar *some_strings[] = { "a", "b", "c", NULL };
    GVariant *new_variant;

    new_variant = g_variant_new ("(t^as)",
                                 // This cast is required.
                                 (guint64) some_flags,
                                 some_strings);

Available since: 2.24

This function is not directly available to language bindings.

#### Parameters

`format_string`

  Type: `const gchar*`

  A `GVariant` format string.

  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`...`

  Type: ``

  Arguments, as per `format_string`.

#### Return value

Type: `GVariant`

A new floating `GVariant` instance.

The caller of the function takes ownership of the data, and is responsible for freeing it.