Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import "fmt"
- type Person struct {
- Name string
- Surname string
- Age int
- }
- func GetValueTypeCheck[T any](dict map[string]interface{}, key string) (T, error) {
- var zeroValue T
- valueData, ok := dict[key]
- if !ok {
- return zeroValue, fmt.Errorf(
- "no value for key '%s'", key)
- }
- value, ok := valueData.(T)
- if !ok {
- return zeroValue, fmt.Errorf(
- "wrong value type")
- }
- return value, nil
- }
- func main() {
- dict := map[string]interface{}{
- "name": "DB",
- "rating": 15,
- "record": &Person{
- Name: "Jane",
- Surname: "Doe",
- Age: 32,
- },
- }
- rating, err := GetValueTypeCheck[int](dict, "rating")
- handleError(err)
- fmt.Println(rating)
- name, err := GetValueTypeCheck[string](dict, "name")
- handleError(err)
- fmt.Println(name)
- person, err := GetValueTypeCheck[*Person](dict, "record")
- handleError(err)
- fmt.Println(person.Name)
- }
- func handleError(err error) {
- if err != nil {
- panic(err)
- }
- }
Add Comment
Please, Sign In to add comment