public override constructorDeclaration()

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 },
    );
  }