1) try set_visible( ABAP_FALSE ). Method has default parameter as true, and if you pass just '' it might take it as empty/not passed value.
2) if 1) does not help:
go_salv_columns->get( ) has returning parameter TYPE SALV_T_COLUMN_REF.
Which is table with column name and reference to column object.
I think you are looping through it wrongly.
Instead:
LOOP AT gt_salv_t_column_ref REFERENCE INTO lr_column.
lr_column->r_column->set_visible( '' ).
ENDLOOP.
Try:
DATA: ls_salv_column LIKE LINE OF gt_salv_t_column_ref.
LOOP AT gt_salv_t_column_ref INTO ls_salv_column. "just structure, not reference
ls_salv_column->r_column->set_visible( '' ).
ENDLOOP.