Struct is a new type for defining custom types by combining inbuilt native types.

This is also called Records or composite type in other programming language

How to define struct in Julia

Struct is a keyword used to define a new types.

Syntax:

struct NewType
    property1
    property2::datatype
    property3::datatype
end

NewType is a custom datatype that holds multiple properties. Properties declared with either datatype or without datatype(Any). property1 is of Any type. :: operators assigns type to an variable or expression Once new type is created, We can create an object using constructor.

variable = NewType(value1,value2,value3)
struct Employee
    id::Int64
    name::string
end

variable = Employee(3, "john")
println(variable)

Output

Employee(3, "john")

properties can be accessed using variable.property syntax

variable = Employee(3, "john")
println(variable.id) # 3
println(variable.name) # john

How to do you change the values of an struct object.

struct Employee
    id::Int64
    name::String
end

variable = Employee(3, "john")

println(variable)
variable.name="ram"
println(variable)

It throws an error ERROR: LoadError: setfield!: immutable struct of type Employee cannot be changed

Employee(3, "john")
ERROR: LoadError: setfield!: immutable struct of type Employee cannot be changed
Stacktrace:
 [1] setproperty!(x::Employee, f::Symbol, v::String)
   @ Base ./Base.jl:39
 [2] top-level scope
   @ ~/SevereGrimyExpertise/main.jl:9
in expression starting at /home/runner/SevereGrimyExpertise/main.jl:9

by default struct types are immutable. You can not change its value.

Then, How do you declare mutable struct

declare struct using mutable keyword

mutable struct type example:

mutable struct Employee
    id::Int64
    name::String
end

variable = Employee(3, "john")

println(variable)
variable.name="ram"
println(variable)

Output:

Employee(3, "john")
Employee(3, "ram")

How to pass Struct type to functions

Function contains a struct as an argument It contains arguments with :: operator

mutable struct Employee
    id::Int64
    name::String
end

variable = Employee(3, "john")

function print(e::Employee)
   println(e.id)
   println(e.name)

end

print(variable)