関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。忘れないうちにメモメモ。。。
いつもお世話になっている Anton さんのブログで以下の記事がアップされていました。
提案された errors.AsType が採択されて、Go 1.26で導入されるみたいですね。
個人的に errors.As の使い方がよく分からなくなるので、これは嬉しいです。
以下、自分用のメモ。
サンプル
main.go
package main import ( "errors" "flag" "fmt" ) type ( apperror struct{} othererror struct{} _args struct { raiseErr bool } ) var ( args _args ) func (me *apperror) Error() string { return "apperror" } func (me *othererror) Error() string { return "othererror" } func fn(b bool) error { if b { return &apperror{} } else { return &othererror{} } } func main() { flag.BoolVar(&args.raiseErr, "err", false, "") flag.Parse() err := fn(args.raiseErr) if err != nil { if appE, ok := errors.AsType[*apperror](err); ok { fmt.Printf("error: %v\n", appE) } else { fmt.Printf("error: %T:%[1]v\n", err) } } }
前準備
Go 1.26 は同然まだリリースされていないので gotip を使います。
$ go install golang.org/dl/gotip@latest $ gotip download $ gotip version go version go1.26-devel_0d0d5c9 Fri Dec 5 17:31:30 2025 -0800 linux/amd64
Taskfile.yml
# https://taskfile.dev version: '3' tasks: default: cmds: - gotip version - gotip build -o app main.go - defer: rm -f ./app - ./app - ./app -err
実行
$ task task: [default] gotip version go version go1.26-devel_0d0d5c9 Fri Dec 5 17:31:30 2025 -0800 linux/amd64 task: [default] gotip build -o app main.go task: [default] ./app error: *main.othererror:othererror task: [default] ./app -err error: apperror task: [default] rm -f ./app
参考情報
個人的Goのおすすめ書籍
個人的に読んでとても勉強になった書籍さんたちです。
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。






