golang immutable struct