public FunctionDefinition getFunctionSignature(GoTypeManager goTypes) throws IOException {
		DataType dt = goTypes.getGhidraDataType(this);
		FunctionDefinition funcdef = dt instanceof Pointer ptrDT &&
			ptrDT.getDataType() instanceof Structure closureStructDT &&
			closureStructDT.getNumComponents() > 1 &&
			closureStructDT.getComponent(0).getDataType() instanceof Pointer funcdefPtr &&
			funcdefPtr.getDataType() instanceof FunctionDefinition fd ? fd : null;

		if (funcdef == null) {
			throw new IOException("Unable to extract function sig for " + this.toString());
		}

		List<ParameterDefinition> newArgs = new ArrayList<>();
		ParameterDefinition[] oldArgs = funcdef.getArguments();
		for (int i = 1; i < oldArgs.length; i++) {
			newArgs.add(oldArgs[i]);
		}

		FunctionDefinitionDataType funcsig =
			new FunctionDefinitionDataType(funcdef.getName(), goTypes.getDTM());
		try {
			funcsig.setCallingConvention(funcdef.getCallingConventionName());
		}
		catch (InvalidInputException e) {
			// ignore
		}
		funcsig.setReturnType(funcdef.getReturnType());
		funcsig.setArguments(newArgs.toArray(ParameterDefinition[]::new));

		return funcsig;
	}
Returns a string that describes the function type as a golang-ish function decl.

@param funcName optional name of a function
@return golang func decl string
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/rtti/types/GoFuncType.java