I want to do something like this
type Struct1 {
str1 string
}
type Struct2{
int1 int
}
if something {
someVar := Struct1{str1:''}
} else {
someVar := Struct2{int1:1}
}
somefunc(someVar)
I know I can't declare c inside of one block and then access it outside.
I tried something like this
type Struct1 {
str1 string
}
type Struct2{
int1 int
}
someVar := Struct2{b:1}
if something {
someVar := Struct1{a:''}
}
somefunc(c)
It gives an error- Cannot assign Struct1 to c(type Struct2)
How can I achieve something like this?
You can, use an interface{}
package main
import (
"fmt"
)
type Struct1 struct {
a string
}
type Struct2 struct {
b int
}
func main() {
var c interface{}
if true {
c = Struct1{a: ""}
} else {
c = Struct2{b: 1}
}
fmt.Printf("type %T", c)
}
// Print:
// type main.Struct1
https://play.golang.org/p/Z1cT9qjFmfU
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With