I think it's again helpful to consider golang as "roughly as modern as Python, but definitely more C-inspired".
The thing that Python f-strings do (other than allow interpolation of arbitrary code to be executed, which can be very handy) is that they generally provide a sane default representation of the value you want. For instance, you can say:
print(f"Value of foo == {foo}") and you get either something sane if foo is a primitive type, or you get whatever foo's __str__() method gives you if it's an instance of a class; the default class general does something not-terrible with that, but you can add __str__() and __repr__() if you have opinions about how you want to represent your class when printed for humans or for machine consumption (effectively, __repr__() should let you reconstruct the object, while __str__() is for display to humans).
This overcomes something C doesn't easily let you do. Most of the time I'd rather not have to care whether the thing I'm printing is a string, or a pointer, or an integer, or whatever: I just want to see its value.
Go has %v for exactly this. It's very nice for debugging.