Because it's normal to call a C function with (&a[0], len(a)) to let
the C function examine all elements of the array or slice. It's not
normal to call a C function with (&s.f) and expect the C function to
examine all elements of the struct; if the C function wants to examine
all elements of a struct, you would pass &s, not &s.f. But you don't
want to pass &a to a C function; with the way C pointers work, you
want to pass a pointer to an element, not a pointer to the array or
slice. (Admittedly passing a pointer to an array would work anyhow,
but passing a pointer to a slice would not.)
Ian