in codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/CodegenUtils.java [243:300]
public static String getAsPointerIfPointable(
Model model,
GoWriter writer,
GoPointableIndex pointableIndex,
Shape shape,
String operand
) {
if (!pointableIndex.isPointable(shape)) {
return operand;
}
if (shape.isMemberShape()) {
shape = model.expectShape(shape.asMemberShape().get().getTarget());
}
String prefix = "";
String suffix = ")";
switch (shape.getType()) {
case STRING:
prefix = "ptr.String(";
break;
case BOOLEAN:
prefix = "ptr.Bool(";
break;
case BYTE:
prefix = "ptr.Int8(";
break;
case SHORT:
prefix = "ptr.Int16(";
break;
case INTEGER:
prefix = "ptr.Int32(";
break;
case LONG:
prefix = "ptr.Int64(";
break;
case FLOAT:
prefix = "ptr.Float32(";
break;
case DOUBLE:
prefix = "ptr.Float64(";
break;
case TIMESTAMP:
prefix = "ptr.Time(";
break;
default:
return '&' + operand;
}
writer.addUseImports(SmithyGoDependency.SMITHY_PTR);
return prefix + operand + suffix;
}