A generic type stores the same shape of data for different value types.

Store a typed value

generic_structs.swift
struct Box<Value> {
    let value: Value

    func label() -> String {
        return "box=\(value)"
    }
}

let storedValue = 
let box = Box(value: storedValue)
let message = box.label()

print(message)
struct Box<Value> {
    let value: Value

    func label() -> String {
        return "box=\(value)"
    }
}

let storedValue = 
let box = Box(value: storedValue)
let message = box.label()

print(message)
struct Box<Value> {
    let value: Value

    func label() -> String {
        return "box=\(value)"
    }
}

let storedValue = 
let box = Box(value: storedValue)
let message = box.label()

print(message)
generic type The type argument is chosen when the generic type is used, so each instance keeps a concrete value type.