関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。前回の続きです。
Go 1.25 のドラフトリリースノートは以下。
上記を見ると、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 .
参考情報
Goのおすすめ書籍
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。