In your example you have a direct reference to the struct. For this simple case yes it will work. But I rarely have such a simple case.
The problem for me occurs when I have an array of structs in some child blueprint really deeply nested and then I have a function that retrieves such a struct based on certain conditions. The problem is that this function, can not pass it by reference in blueprints (only in C++). So I can not use any kind of function to retrieve them if I later want to change their vale(s). Not to mention that I often accidentally do this and then while debugging I’m like “ohyeah… struct + blueprint”…
And if in the above example the struct has variables of type then it becomes undoable to not use functions to retrieve them from other objects.
Also I can not store them in temporal-variables and such (unless I only need to read their values) because this creates a copy of the struct. There is no way of getting/storing it by reference in blueprints that I’m aware of. Another problem:
Example: Player has a struct with a variable ammo.
Every frame I want to reduce the amount of ammo in this struct by 1 (but only if the player still uses that weapon). Normally when switching weapons I would store the active-ammo-struct in the player and then I could just subtract it by 1 every frame. But because I can’t store a reference to a struct, I’m forced to loop through all the ammo-structs the player has, find the one matching the active-weapon and then use set-members-in-struct, every frame! Which is bad for performance.
The only workaround that I know of is using C++ and creating classes that store only a bunch of variables (which is dirty) but I don’t really know any other way right now. Because then I can use pointers and/or pass by reference.