# getfield

getfield(value, name::Symbol)

Extract a named field from a `value` of composite type. The syntax `a.b` calls `getfield(a, :b)`, and the syntax `a.(b)` calls `getfield(a, b)`.

## Examples

In the Julia programming language, the function `getfield(value, name::Symbol)`

Extracts a named field from a `value` of composite type. The syntax `a.b` calls `getfield(a, :b)`, and the syntax `a.(b)` calls `getfield(a, b)`.

Here are some common examples of how to use `getfield`:

1. Access a field from a struct:

``````julia> struct Person
name::String
age::Int
end

julia> p = Person("Alice", 25)
Person("Alice", 25)

julia> getfield(p, :name)
"Alice"``````

This example shows how to access the `name` field of a `Person` struct using `getfield`.

2. Access a nested field from a nested struct:

``````julia> struct Address
street::String
city::String
end

julia> struct Person
name::String
age::Int
end

julia> p = Person("Bob", 30, Address("123 Main St", "New York"))

"123 Main St"``````

In this example, we access the nested `street` field of the `address` field within the `Person` struct.

3. Use dot syntax for field access:

``````julia> struct Point
x::Float64
y::Float64
end

julia> p = Point(3.5, 2.0)

julia> p.x
3.5

julia> getfield(p, :x)
3.5``````

The dot syntax `p.x` is equivalent to `getfield(p, :x)`. Both methods access the `x` field of the `Point` struct.

Common mistake example:

``````julia> struct Rectangle
width::Float64
height::Float64
end

julia> r = Rectangle(5.0, 3.0)

julia> getfield(r, "width")
ERROR: MethodError: no method matching getfield(::Rectangle, ::String)``````

In this example, the field name is passed as a string instead of a symbol. The correct usage is to pass the field name as a symbol (`:width`) to `getfield`.