private static GoBuildInfo readStringInfo(BinaryReader reader, boolean inlineStr,
			Program program, int ptrSize, StructureDataType struct) throws IOException {

		DataTypeManager dtm = program.getDataTypeManager();
		String moduleString;
		String versionString;

		if (inlineStr) {
			reader.setPointerIndex(32 /* static start of inline strings */);

			LEB128Info verStrLen = reader.readNext(LEB128Info::unsigned);
			byte[] versionStringBytes = reader.readNextByteArray(verStrLen.asInt32());
			versionString = new String(versionStringBytes, StandardCharsets.UTF_8);

			LEB128Info modStrLen = reader.readNext(LEB128Info::unsigned);
			byte[] moduleStringBytes = reader.readNextByteArray(modStrLen.asInt32());

			struct.add(new ArrayDataType(BYTE, 16, -1, dtm), -1, "padding", null);
			struct.add(new UnsignedLeb128DataType(dtm), verStrLen.getLength(), "versionlen", null);
			struct.add(new ArrayDataType(ASCII, verStrLen.asInt32(), -1, dtm), -1, "version", null);
			struct.add(new UnsignedLeb128DataType(dtm), modStrLen.getLength(), "modulelen", null);

			moduleString = extractModuleString(moduleStringBytes, struct);

			try {
				String structNameSuffix = "_inline_%d_%d_%d_%d".formatted(verStrLen.getLength(),
					verStrLen.asInt32(), modStrLen.getLength(), modStrLen.asInt32());
				struct.setName(struct.getName() + structNameSuffix);
			}
			catch (InvalidNameException e) {
				// ignore
			}
		}
		else {
			reader.setPointerIndex(16 /* static start of 2 string pointers */);
			long versionStrOffset = reader.readNextUnsignedValue(ptrSize);
			long moduleStrOffset = reader.readNextUnsignedValue(ptrSize);

			MemoryByteProvider memBP = new MemoryByteProvider(program.getMemory(),
				program.getImageBase().getAddressSpace());
			BinaryReader fullReader = new BinaryReader(memBP, reader.isLittleEndian());

			fullReader.setPointerIndex(versionStrOffset);
			versionString = readGoString(fullReader, ptrSize);

			fullReader.setPointerIndex(moduleStrOffset);
			byte[] moduleStrBytes = readRawGoString(fullReader, ptrSize);
			moduleString = extractModuleString(moduleStrBytes, null);

			DataType ofsDT = AbstractIntegerDataType.getUnsignedDataType(ptrSize, dtm);
			struct.add(ofsDT, -1, "versionofs", null);
			struct.add(ofsDT, -1, "moduleofs", null);
		}

		return parseBuildInfo(ptrSize, reader.isBigEndian() ? Endian.BIG : Endian.LITTLE,
			versionString, moduleString, struct);
	}
Returns a Golang "GOARCH" string created by a mapping from the Ghidra program's language (arch).

@param program {@link Program}
@return Golang "GOARCH" string
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/GoBuildInfo.java