Home > Backend Development > Golang > How to access subtype properties in parent type object in Go?

How to access subtype properties in parent type object in Go?

王林
Release: 2024-02-09 17:45:08
forward
802 people have browsed it

How to access subtype properties in parent type object in Go?

In the Go language, we often encounter situations where we need to access subtype properties in parent type objects. This may be because we use nested structures when defining the structure. However, since there is no concept of inheritance in the Go language, subtype properties cannot be accessed directly through the parent type object. So, how to implement this requirement in Go? Below, I will introduce you to several commonly used methods.

Question content

I am creating a file storage. I'm trying to create different types of files. To simulate this I use the code:

<code>package main

import (
    "fmt"
    "time"
)

type File interface{}

type Audio struct {
    File
    Duration time.Duration
}

type Image struct {
    File
    Width  uint
    Height uint
}

func main() {
    var files = map[string]File{
        "1": Audio{
            Duration: 14 * time.Second,
        },
        "2": Image{
            Height: 9989,
            Width:  1111,
        },
        "3": Image{
                        Width:  1234,
            Height: 5678,
        },
    }
    for k, v := range files {
        switch v.(type) {
        case Audio:
            fmt.Printf("%s: Audio %d seconds", k, v.Duration / time.Second)
        case Image:
            fmt.Printf("%s: Image %dx%d", k, v.Width, v.Height)
        }
    }
}
</code>
Copy after login

I am expecting this output:

1: Audio 14 seconds
2: Image 1111x9989
3: Image 1234x5678
Copy after login

But the Go compiler gave me this error:

./main.go:38:44: v.Duration is undefined (type File has no field or method Duration)

./main.go:40:39: v.Width is undefined (type File has no field or method Width)

./main.go:40:48: v.Height is undefined (type File has no field or method Height)

How to fix the error?

Solution

switch v := v.(type) {
Copy after login

will declare a new v with the type you expect.

The above is the detailed content of How to access subtype properties in parent type object in Go?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template