In fact, there is always a default inner constructor automatically defined by Julia if you don't explicitly define one. It's equivalent to :
julia> struct MyType
a::Int64
b::Int64
MyType(a,b) = new(a,b)
end
Note that, by running MyArray = Array{MyType}(5), you just construct an 5-element array whose eltype should be MyType. Julia still doesn't know what on earth those entries are, that's what the error is complaining about.
Take a look at the following example:
julia> a = Array{Complex}(5)
5-element Array{Complex{T<:Real},1}:
#undef
#undef
#undef
#undef
#undef
btw, I don't know what you mean to do with this line MyArray[1].a = [1 2 3], since a is of type Int, not Vector{Int}.