<!-- Generated with Stardoc: http://skydoc.bazel.build -->

<a name="#check_struct_default_values"></a>

## check_struct_default_values

<pre>
check_struct_default_values(<a href="#check_struct_default_values-struct_no_args">struct_no_args</a>, <a href="#check_struct_default_values-struct_arg">struct_arg</a>, <a href="#check_struct_default_values-struct_args">struct_args</a>, <a href="#check_struct_default_values-struct_int_args">struct_int_args</a>, <a href="#check_struct_default_values-struct_struct_args">struct_struct_args</a>)
</pre>

Checks the default values of structs.

### Parameters

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="check_struct_default_values-struct_no_args">
      <td><code>struct_no_args</code></td>
      <td>
        optional. default is <code>struct()</code>
        <p>
          struct with no arguments
        </p>
      </td>
    </tr>
    <tr id="check_struct_default_values-struct_arg">
      <td><code>struct_arg</code></td>
      <td>
        optional. default is <code>struct(foo = "bar")</code>
        <p>
          struct with one argument
        </p>
      </td>
    </tr>
    <tr id="check_struct_default_values-struct_args">
      <td><code>struct_args</code></td>
      <td>
        optional. default is <code>struct(bar = "foo", foo = "bar")</code>
        <p>
          struct with multiple arguments
        </p>
      </td>
    </tr>
    <tr id="check_struct_default_values-struct_int_args">
      <td><code>struct_int_args</code></td>
      <td>
        optional. default is <code>struct(one = 1, three = 3, two = 2)</code>
        <p>
          struct with int arguments
        </p>
      </td>
    </tr>
    <tr id="check_struct_default_values-struct_struct_args">
      <td><code>struct_struct_args</code></td>
      <td>
        optional. default is <code>struct(multiple = struct(one = 1, three = 3, two = 2), none = struct(), one = struct(foo = "bar"))</code>
        <p>
          struct with struct arguments
        </p>
      </td>
    </tr>
  </tbody>
</table>


