in src/languages/go.ts [125:157]
public override functionDeclaration(node: ts.FunctionDeclaration, renderer: GoRenderer): OTree {
const funcName = renderer.updateContext({ isExported: isExported(node) }).convert(node.name);
const returnType = determineReturnType(renderer.typeChecker, node);
const goType = this.renderType(node.type ?? node, returnType?.symbol, returnType, true, '', renderer);
const body = node.body?.statements ? renderer.convertAll(node.body.statements) : [];
return new OTree(
[
'func ',
funcName,
'(',
new OTree([], renderer.updateContext({ isPtr: true }).convertAll(node.parameters), {
separator: ', ',
}),
')',
goType ? ' ' : '',
goType,
],
[
new OTree(
[' {'],
[this.defaultArgValues(node.parameters, renderer.updateContext({ wrapPtr: true })), ...body],
{
indent: 1,
suffix: '\n}',
},
),
],
{
canBreakLine: true,
},
);
}