39 lines
522 B
Go
39 lines
522 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
)
|
|
|
|
type Printable interface {
|
|
Number | NumberFloat
|
|
fmt.Stringer
|
|
}
|
|
|
|
type Number struct {
|
|
val int
|
|
}
|
|
|
|
func (num Number) String() string {
|
|
return string(strconv.Itoa(num.val))
|
|
}
|
|
|
|
type NumberFloat struct {
|
|
val float64
|
|
}
|
|
|
|
func (num NumberFloat) String() string {
|
|
return string(strconv.Itoa(int(num.val)))
|
|
}
|
|
|
|
func Print[T Printable](num T) {
|
|
fmt.Println(num)
|
|
}
|
|
|
|
func main() {
|
|
firstTest := Number{val: 5}
|
|
secondTest := NumberFloat{val: 7.2}
|
|
Print(firstTest)
|
|
Print(secondTest)
|
|
}
|