Explain the use of Go structs for defining custom data types?