2017-07-17 82 views
1

我想知道是否有可能通過動態結構作爲函數的參數?動態結構作爲參數Golang

type ReturnValue struct { 
    Status string 
    CustomStruct // here should store any struct given 
} 

func GetReturn(status string, class interface{}){ 
    var result = ReturnValue {Status : status, CustomStruct : //here any struct should be stored} 

    fmt.Prinln(result) 
} 

type Message1 struct { 
    message : string 
} 

func main(){ 
    var message = Message1 {message: "Hello"} 
    GetReturn("success", message) 
} 
+1

https://play.golang.org/p/kV_k_-p4NH – mkopriva

回答

1

您可以使用像這樣的接口和if語句來將它返回到它作爲tho的任何結構體。

import (
    "fmt" 
) 

type ReturnValue struct { 
    Status string 
    CustomStruct interface{} 
} 

func GetReturn(status string, class interface{}){ 
    var result = ReturnValue {Status : status, CustomStruct: class} 

    fmt.Println(result) 

    msg, ok := result.CustomStruct.(Message1) 
    if ok { 
     fmt.Printf("Message1 is %s\n", msg.message) 
    } 
} 

type Message1 struct { 
    message string 
} 

type Message2 struct { 
    message string 
} 

func main(){ 
    var m1 = Message1 {message: "Hello1"} 
    GetReturn("success", m1) 

    var m2 = Message2 {message: "Hello2"} 
    GetReturn("success", m2) 
} 

https://play.golang.org/p/L6VYV80x27