diff --git a/lib/datasource/go/__snapshots__/index.spec.ts.snap b/lib/datasource/go/__snapshots__/index.spec.ts.snap
index 8ef004e2c8cad7bf39753313f42cb1fa1d1fc53f..7fffc7b10b3a731397182daa4b96aacb1b6d0bc3 100644
--- a/lib/datasource/go/__snapshots__/index.spec.ts.snap
+++ b/lib/datasource/go/__snapshots__/index.spec.ts.snap
@@ -93,33 +93,33 @@ Array [
 ]
 `;
 
-exports[`datasource/go getReleases falls back to old behaviour 1`] = `
-Array [
-  Object {
-    "headers": Object {
-      "accept": "application/vnd.github.v3+json",
-      "accept-encoding": "gzip, deflate",
-      "host": "api.github.com",
-      "user-agent": "https://github.com/renovatebot/renovate",
+exports[`datasource/go getReleases handles fyne.io 1`] = `
+Object {
+  "releases": Array [
+    Object {
+      "gitRef": "v1.0.0",
+      "version": "v1.0.0",
     },
-    "method": "GET",
-    "url": "https://api.github.com/repos/x/text/tags?per_page=100",
-  },
+    Object {
+      "gitRef": "v2.0.0",
+      "version": "v2.0.0",
+    },
+  ],
+  "sourceUrl": "https://github.com/fyne-io/fyne",
+}
+`;
+
+exports[`datasource/go getReleases handles fyne.io 2`] = `
+Array [
   Object {
     "headers": Object {
-      "accept": "application/vnd.github.v3+json",
       "accept-encoding": "gzip, deflate",
-      "host": "api.github.com",
+      "host": "fyne.io",
       "user-agent": "https://github.com/renovatebot/renovate",
     },
     "method": "GET",
-    "url": "https://api.github.com/repos/x/text/releases?per_page=100",
+    "url": "https://fyne.io/fyne?go-get=1",
   },
-]
-`;
-
-exports[`datasource/go getReleases falls back to old behaviour 2`] = `
-Array [
   Object {
     "headers": Object {
       "accept": "application/vnd.github.v3+json",
@@ -128,7 +128,7 @@ Array [
       "user-agent": "https://github.com/renovatebot/renovate",
     },
     "method": "GET",
-    "url": "https://api.github.com/repos/x/text/tags?per_page=100",
+    "url": "https://api.github.com/repos/fyne-io/fyne/tags?per_page=100",
   },
   Object {
     "headers": Object {
@@ -138,12 +138,12 @@ Array [
       "user-agent": "https://github.com/renovatebot/renovate",
     },
     "method": "GET",
-    "url": "https://api.github.com/repos/x/text/releases?per_page=100",
+    "url": "https://api.github.com/repos/fyne-io/fyne/releases?per_page=100",
   },
 ]
 `;
 
-exports[`datasource/go getReleases handles fyne.io 1`] = `
+exports[`datasource/go getReleases processes real data 1`] = `
 Object {
   "releases": Array [
     Object {
@@ -155,20 +155,20 @@ Object {
       "version": "v2.0.0",
     },
   ],
-  "sourceUrl": "https://github.com/fyne-io/fyne",
+  "sourceUrl": "https://github.com/golang/text",
 }
 `;
 
-exports[`datasource/go getReleases handles fyne.io 2`] = `
+exports[`datasource/go getReleases processes real data 2`] = `
 Array [
   Object {
     "headers": Object {
       "accept-encoding": "gzip, deflate",
-      "host": "fyne.io",
+      "host": "golang.org",
       "user-agent": "https://github.com/renovatebot/renovate",
     },
     "method": "GET",
-    "url": "https://fyne.io/fyne?go-get=1",
+    "url": "https://golang.org/x/text?go-get=1",
   },
   Object {
     "headers": Object {
@@ -178,7 +178,7 @@ Array [
       "user-agent": "https://github.com/renovatebot/renovate",
     },
     "method": "GET",
-    "url": "https://api.github.com/repos/fyne-io/fyne/tags?per_page=100",
+    "url": "https://api.github.com/repos/golang/text/tags?per_page=100",
   },
   Object {
     "headers": Object {
@@ -188,37 +188,22 @@ Array [
       "user-agent": "https://github.com/renovatebot/renovate",
     },
     "method": "GET",
-    "url": "https://api.github.com/repos/fyne-io/fyne/releases?per_page=100",
+    "url": "https://api.github.com/repos/golang/text/releases?per_page=100",
   },
 ]
 `;
 
-exports[`datasource/go getReleases processes real data 1`] = `
-Object {
-  "releases": Array [
-    Object {
-      "gitRef": "v1.0.0",
-      "version": "v1.0.0",
-    },
-    Object {
-      "gitRef": "v2.0.0",
-      "version": "v2.0.0",
-    },
-  ],
-  "sourceUrl": "https://github.com/golang/text",
-}
-`;
-
-exports[`datasource/go getReleases processes real data 2`] = `
+exports[`datasource/go getReleases returns none if no tags match submodules 1`] = `
 Array [
   Object {
     "headers": Object {
+      "accept": "application/vnd.github.v3+json",
       "accept-encoding": "gzip, deflate",
-      "host": "golang.org",
+      "host": "api.github.com",
       "user-agent": "https://github.com/renovatebot/renovate",
     },
     "method": "GET",
-    "url": "https://golang.org/x/text?go-get=1",
+    "url": "https://api.github.com/repos/x/text/tags?per_page=100",
   },
   Object {
     "headers": Object {
@@ -228,8 +213,13 @@ Array [
       "user-agent": "https://github.com/renovatebot/renovate",
     },
     "method": "GET",
-    "url": "https://api.github.com/repos/golang/text/tags?per_page=100",
+    "url": "https://api.github.com/repos/x/text/releases?per_page=100",
   },
+]
+`;
+
+exports[`datasource/go getReleases returns none if no tags match submodules 2`] = `
+Array [
   Object {
     "headers": Object {
       "accept": "application/vnd.github.v3+json",
@@ -238,7 +228,17 @@ Array [
       "user-agent": "https://github.com/renovatebot/renovate",
     },
     "method": "GET",
-    "url": "https://api.github.com/repos/golang/text/releases?per_page=100",
+    "url": "https://api.github.com/repos/x/text/tags?per_page=100",
+  },
+  Object {
+    "headers": Object {
+      "accept": "application/vnd.github.v3+json",
+      "accept-encoding": "gzip, deflate",
+      "host": "api.github.com",
+      "user-agent": "https://github.com/renovatebot/renovate",
+    },
+    "method": "GET",
+    "url": "https://api.github.com/repos/x/text/releases?per_page=100",
   },
 ]
 `;
diff --git a/lib/datasource/go/index.spec.ts b/lib/datasource/go/index.spec.ts
index 442f20e38acf4bd210a988f698dd38a44f906c4e..1c3ad871a24213804c4d94972e7faab584f7b501 100644
--- a/lib/datasource/go/index.spec.ts
+++ b/lib/datasource/go/index.spec.ts
@@ -132,6 +132,7 @@ describe('datasource/go', () => {
       expect(httpMock.getTrace()).toMatchSnapshot();
     });
   });
+
   describe('getReleases', () => {
     it('returns null for empty result', async () => {
       httpMock
@@ -391,7 +392,7 @@ describe('datasource/go', () => {
         httpMock.reset();
       }
     });
-    it('falls back to old behaviour', async () => {
+    it('returns none if no tags match submodules', async () => {
       const packages = [
         { datasource, depName: 'github.com/x/text/a' },
         { datasource, depName: 'github.com/x/text/b' },
@@ -408,10 +409,7 @@ describe('datasource/go', () => {
           .reply(200, []);
 
         const result = await getPkgReleases(pkg);
-        expect(result.releases).toHaveLength(2);
-        expect(result.releases.map(({ version }) => version)).toStrictEqual(
-          tags.map(({ name }) => name)
-        );
+        expect(result.releases).toHaveLength(0);
 
         const httpCalls = httpMock.getTrace();
         expect(httpCalls).toMatchSnapshot();
@@ -427,7 +425,6 @@ describe('datasource/go', () => {
         { name: 'b/v3.0.0' },
       ];
 
-      httpMock.setup();
       httpMock
         .scope('https://api.github.com/')
         .get('/repos/x/text/tags?per_page=100')
@@ -443,7 +440,6 @@ describe('datasource/go', () => {
 
       const httpCalls = httpMock.getTrace();
       expect(httpCalls).toMatchSnapshot();
-      httpMock.reset();
     });
     it('handles fyne.io', async () => {
       httpMock
diff --git a/lib/datasource/go/index.ts b/lib/datasource/go/index.ts
index 9f2cfd6d550517fd786863c7c623ddd3f61b3d6e..a8372bdbc90921367cfc128d8bcab5afc3b14c20 100644
--- a/lib/datasource/go/index.ts
+++ b/lib/datasource/go/index.ts
@@ -151,13 +151,14 @@ export async function getReleases({
 }: GetReleasesConfig): Promise<ReleaseResult | null> {
   logger.trace(`go.getReleases(${lookupName})`);
   const source = await getDatasource(lookupName);
-  let res = null;
 
   if (!source) {
     logger.warn({ lookupName }, 'Unsupported dependency.');
     return null;
   }
 
+  let res: ReleaseResult;
+
   switch (source.datasource) {
     case github.id: {
       res = await github.getReleases(source);
@@ -179,8 +180,9 @@ export async function getReleases({
 
   // istanbul ignore if
   if (!res) {
-    return res;
+    return null;
   }
+
   /**
    * github.com/org/mod/submodule should be tagged as submodule/va.b.c
    * and that tag should be used instead of just va.b.c, although for compatibility
@@ -188,9 +190,14 @@ export async function getReleases({
    */
   const nameParts = lookupName.replace(/\/v\d+$/, '').split('/');
   logger.trace({ nameParts, releases: res.releases }, 'go.getReleases');
+
+  // If it has more than 3 parts it's a submodule
   if (nameParts.length > 3) {
     const prefix = nameParts.slice(3, nameParts.length).join('/');
     logger.trace(`go.getReleases.prefix:${prefix}`);
+
+    // Filter the releases so that we only get the ones that are for this submodule
+    // Also trim the submodule prefix from the version number
     const submodReleases = res.releases
       .filter((release) => release.version?.startsWith(prefix))
       .map((release) => {
@@ -199,18 +206,19 @@ export async function getReleases({
         return r2;
       });
     logger.trace({ submodReleases }, 'go.getReleases');
-    if (submodReleases.length > 0) {
-      return {
-        sourceUrl: res.sourceUrl,
-        releases: submodReleases,
-      };
-    }
+
+    return {
+      sourceUrl: res.sourceUrl,
+      releases: submodReleases,
+    };
   }
-  if (res?.releases) {
+
+  if (res.releases) {
     res.releases = res.releases.filter((release) =>
       release.version?.startsWith('v')
     );
   }
+
   return res;
 }