How to switch to specific materials on an object with multiple materials?

I use the following code to switch an objects material via a button click in-game. I am a bit stuck when it comes to changing materials on an object with more than one material, as this is only changing the first material.

    public class MaterialSwitch : MonoBehaviour
    {
        [SerializeField] private GameObject objectToChange;

        public void SwitchMaterial (Material mat)
        {
            objectToChange.GetComponent<Renderer>().material = mat;
        }
    }

I feel like the solution is pretty simple but I am quite new to progamming!
If someone can help me out it would be very much appreciated!

renderer.material is really just a shortcut for renderer.materials[0]. To change them all, just use a loop.
See documentation https://docs.unity3d.com/ScriptReference/Renderer.html
Renderer.material Returns the first instantiated Material assigned to the renderer.

Modifying material will change the material for this object only.

If the material is used by any other renderers, this will clone the shared material and start using it from now on.

Note:
This function automatically instantiates the materials and makes them unique to this renderer. It is your responsibility to destroy the materials when the game object is being destroyed. Resources.UnloadUnusedAssets also destroys the materials but it is usually only called when loading a new level.

using UnityEngine;
using System.Collections;

// Change renderer's material each changeInterval
// seconds from the material array defined in the inspector.
public class ExampleClass : MonoBehaviour
{
    public Material[] materials;
    public float changeInterval = 0.33F;
    public Renderer rend;

    void Start()
    {
        rend = GetComponent<Renderer>();
        rend.enabled = true;
    }

    void Update()
    {
        if (materials.Length == 0)
            return;

        // we want this material index now
        int index = Mathf.FloorToInt(Time.time / changeInterval);

        // take a modulo with materials count so that animation repeats
        index = index % materials.Length;

        // assign it to the renderer
        rend.sharedMaterial = materials[index];
    }
}

you can get idea from the above code how to change materials in the array Material[].