expr.AsKind not work?
まだ誰も着手していません。
評価
調査の方向性
提供された Go の再現コードから始め、expr.AsKind と、それによって生成されるコンパイルエラーを調査します。int と int32 の不一致が想定されたものかバグかを判断し、そのうえで int32 の結果を取得するためにサポートされている方法を文書化するか、必要な修正を定義します。
索引モデルが issue の本文から書いたものです。
説明
package main
import (
"errors"
"fmt"
"reflect"
"github.com/expr-lang/expr"
)
type Number interface {
int | uint | uint32 | int32 | uint64 | int64 | float32 | float64
}
func TryStrToNum[T Number](str string) (retValue T, err error) {
program, err := expr.Compile(str, expr.AsKind(reflect.TypeOf(retValue).Kind()))
if err != nil {
fmt.Printf("Compile Error: %s, %v\n", str, err)
return
}
v, err := expr.Run(program, nil)
if err != nil {
fmt.Printf("Run Error: %s, %v\n", str, err)
return
}
retValue, flag := v.(T)
if !flag {
fmt.Printf("StrToNumber Error: %s, %v", str, v)
return retValue, errors.New(fmt.Sprintf("TryStrToNum error: %s", str))
}
return retValue, nil
}
func main() {
fmt.Println(TryStrToNum[int32]("1"))
}
/*
Compile Error: 1, expected int32, but got int
0 expected int32, but got int
*/
is it a bug ?
How to fix it?
- 主要言語
- Go
- スター
- 8k
- フォーク
- 529
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
expr-lang/expr のほかの issue
-
docs needed
難易度 1/5 1〜3時間 初心者へのやさしさ 62/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
-
log2 builtin オープン
難易度 3/5 1〜2日 初心者へのやさしさ 48/100
似ている issue
-
area/dev-productivity area/disaster-recovery area/ipcei kind/enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
kind/bug status/0-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
🤔 refinement needed
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
equinor/radix-operator#1979 ·