Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Assign different struct to variable in If-else block in golang

Tags:

go

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?

like image 596
Shubham Chaudhary Avatar asked Jan 31 '26 04:01

Shubham Chaudhary


1 Answers

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

like image 158
Philidor Avatar answered Feb 02 '26 18:02

Philidor