in src/languages/go.ts [718:749]
public override constructorDeclaration(
node: ts.ConstructorDeclaration,
renderer: AstRenderer<GoLanguageContext>,
): OTree {
const className = node.parent.name
? this.goName(
node.parent.name.text,
renderer.updateContext({ isExported: isExported(node.parent) }),
renderer.typeChecker.getSymbolAtLocation(node.parent.name),
)
: 'anonymous';
const defaultArgValues = this.defaultArgValues(node.parameters, renderer);
return new OTree(
[
'func ',
isExported(node.parent) ? 'New' : 'new',
ucFirst(className),
'(',
new OTree([], renderer.convertAll(node.parameters), { separator: ', ' }),
') *',
className,
' {',
new OTree([], [defaultArgValues, '\nthis := &', className, '{}'], {
indent: 1,
}),
],
node.body ? renderer.convertAll(node.body.statements) : [],
{ canBreakLine: true, suffix: '\n\treturn this\n}', indent: 1 },
);
}