Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

expr.AsKind not work?

Aperta
#689 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
go
Ambito
compilers

Direzione di ricerca

Inizia con la riproduzione Go fornita ed esamina expr.AsKind e l'errore di compilazione che produce. Determina se la mancata corrispondenza tra int e int32 è prevista o se si tratta di un bug, quindi documenta il modo supportato per ottenere un risultato int32 oppure definisci la correzione necessaria.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug research
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?

Lingua principale
Go
Stelle
8k
Fork
529
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di expr-lang/expr

Tutte le issue di expr-lang/expr

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.