What is the difference between Go's slice and array types?