以下の内容はhttps://devlights.hatenablog.com/entry/2025/06/20/073000より取得しました。


Goメモ-592 (Go 1.25でgo vet コマンドに net.Dial 用のチェックが追加)(Go 1.25 rc1)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。前回の続きです。

devlights.hatenablog.com

devlights.hatenablog.com

devlights.hatenablog.com

devlights.hatenablog.com

Go 1.25 のドラフトリリースノートは以下。

tip.golang.org

上記を見ると、Go 1.25 で go vet コマンドに net.Dial 向けのチェックが追加されるみたいですね。

which reports uses of fmt.Sprintf("%s:%d", host, port) to construct addresses for net.Dial, as these will not work with IPv6; instead it suggests using net.JoinHostPort.

ってあるので、net.Dial時のエンドポイント指定時に、fmt.Sprintf("%s:%d", host, port) って指定してるとIPv6の場合はうまくいかないから警告してくれるようになったみたいですね。

一応、ちゃんと警告されるか試してみました。

試してみた

go version

$ go version
go version go1.25rc1 linux/arm64

main.go

package main

import (
        "fmt"
        "net"
)

func main() {
        const (
                HOST = "127.0.0.1"
                PORT = 8888
        )
        conn, _ := net.Dial("tcp", fmt.Sprintf("%s:%d", HOST, PORT))
        defer conn.Close()
}

go vet

go vet するとちゃんと警告でますね。

$ go vet .
# app
# [app]
./main.go:13:41: address format "%s:%d" does not work with IPv6

main.go (2)

正しい形に直して

package main

import (
        "net"
        "strconv"
)

func main() {
        const (
                HOST = "127.0.0.1"
                PORT = 8888
        )
        conn, _ := net.Dial("tcp", net.JoinHostPort(HOST, strconv.Itoa(PORT)))
        defer conn.Close()
}

vetすると警告は消えました。

$ go vet .

参考情報

pkg.go.dev

pkg.go.dev

Goのおすすめ書籍


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。




以上の内容はhttps://devlights.hatenablog.com/entry/2025/06/20/073000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14