all: update go directive to 1.18 [generated]

Update the go directive to 1.18, and modernize the module by
applying changes generated by the script below with go1.21.4.

For golang/go#60268.

[git-generate]
go get go@1.18
go mod tidy
go fix ./...
gofmt -r 'ioutil.ReadAll -> io.ReadAll' -w .
gofmt -r 'ioutil.WriteFile -> os.WriteFile' -w .
gofmt -r '"ioutil.WriteFile: %v" -> "os.WriteFile: %v"' -w .
gofmt -r 'interface{} -> any' -w .
goimports -w .

Change-Id: I34a020389eb7f5b90f93da12595604c4a0134eae
Reviewed-on: https://go-review.googlesource.com/c/dl/+/540221
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
diff --git a/go.mod b/go.mod
index 63793e5..d1c0f94 100644
--- a/go.mod
+++ b/go.mod
@@ -1,3 +1,3 @@
 module golang.org/dl
 
-go 1.11
+go 1.18
diff --git a/internal/genv/main.go b/internal/genv/main.go
index 91b9c42..c498e41 100644
--- a/internal/genv/main.go
+++ b/internal/genv/main.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.13
-// +build go1.13
 
 // The genv command generates version-specific go command source files.
 package main
@@ -14,7 +13,6 @@
 	"errors"
 	"fmt"
 	"html/template"
-	"io/ioutil"
 	"os"
 	"os/exec"
 	"path/filepath"
@@ -60,8 +58,8 @@
 		if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {
 			failf("%v", err)
 		}
-		if err := ioutil.WriteFile(path, buf.Bytes(), 0666); err != nil {
-			failf("ioutil.WriteFile: %v", err)
+		if err := os.WriteFile(path, buf.Bytes(), 0666); err != nil {
+			failf("os.WriteFile: %v", err)
 		}
 		fmt.Println("Wrote", path)
 		if err := exec.Command("gofmt", "-w", path).Run(); err != nil {
@@ -89,7 +87,7 @@
 	return m[1]
 }
 
-func failf(format string, args ...interface{}) {
+func failf(format string, args ...any) {
 	if len(format) == 0 || format[len(format)-1] != '\n' {
 		format += "\n"
 	}
diff --git a/internal/genv/main_test.go b/internal/genv/main_test.go
index 6b25e91..863a5f3 100644
--- a/internal/genv/main_test.go
+++ b/internal/genv/main_test.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build go1.13
-// +build go1.13
 
 package main
 
diff --git a/internal/version/signal_notunix.go b/internal/version/signal_notunix.go
index 506655d..c50d0c7 100644
--- a/internal/version/signal_notunix.go
+++ b/internal/version/signal_notunix.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build plan9 || windows
-// +build plan9 windows
 
 package version
 
diff --git a/internal/version/signal_unix.go b/internal/version/signal_unix.go
index 697b4fd..29f637a 100644
--- a/internal/version/signal_unix.go
+++ b/internal/version/signal_unix.go
@@ -3,7 +3,6 @@
 // license that can be found in the LICENSE file.
 
 //go:build aix || darwin || dragonfly || freebsd || js || linux || netbsd || openbsd || solaris || wasip1
-// +build aix darwin dragonfly freebsd js linux netbsd openbsd solaris wasip1
 
 package version
 
diff --git a/internal/version/version.go b/internal/version/version.go
index 709eca4..e8bab69 100644
--- a/internal/version/version.go
+++ b/internal/version/version.go
@@ -13,7 +13,6 @@
 	"errors"
 	"fmt"
 	"io"
-	"io/ioutil"
 	"log"
 	"net/http"
 	"os"
@@ -149,7 +148,7 @@
 	if err := unpackArchive(targetDir, archiveFile); err != nil {
 		return fmt.Errorf("extracting archive %v: %v", archiveFile, err)
 	}
-	if err := ioutil.WriteFile(filepath.Join(targetDir, unpackedOkay), nil, 0644); err != nil {
+	if err := os.WriteFile(filepath.Join(targetDir, unpackedOkay), nil, 0644); err != nil {
 		return err
 	}
 	log.Printf("Success. You may now run '%v'", version)
@@ -320,7 +319,7 @@
 	if res.StatusCode != http.StatusOK {
 		return "", fmt.Errorf("%s: %v", url_, res.Status)
 	}
-	slurp, err := ioutil.ReadAll(res.Body)
+	slurp, err := io.ReadAll(res.Body)
 	if err != nil {
 		return "", fmt.Errorf("reading %s: %v", url_, err)
 	}