Wie kann ich den benutzerdefinierten Typ in interface{}
und dann in den Basistyp konvertieren (z. B. uint8
)?Geben Sie benutzerdefinierte Cast-Typen zu Basistypen ein
ich nicht direkt Guss wie uint16(val.(Year))
verwenden kann, weil ich nicht alle benutzerdefinierten Typen wissen kann, aber ich kann in Basistypen (uint8
, uint32
, ...) Laufzeit
Es gibt viele individuelle Bestimmtes Typen auf Basis von numerischen (in der Regel als Aufzählungen verwendet):
ex:
type Year uint16
type Day uint8
type Month uint8
und so weiter ...
Die Frage ist, über Art Gießen von interface{}
auf Basistypen:
package main
import "fmt"
type Year uint16
// ....
//Many others custom types based on uint8
func AsUint16(val interface{}) uint16 {
return val.(uint16) //FAIL: cannot convert val (type interface {}) to type uint16: need type assertion
}
func AsUint16_2(val interface{}) uint16 {
return uint16(val) //FAIL: cannot convert val (type interface {}) to type uint16: need type assertion
}
func main() {
fmt.Println(AsUint16_2(Year(2015)))
}
http://play.golang.org/p/cyAnzQ90At
Bitte beachten Sie, dass weder 'val (unit16)' 'noch uint16 (val)' ist eine "Besetzung". Die erste ist eine "Art Behauptung" und die zweite und "Typumwandlung". – Volker