go - 如何将类型作为函数的参数传递?

所以我有一个结构


type Book struct {

    Name   string

    Author string

}

这是我使用这个结构时的代码


func Add(obj string) {

    res, err := json.Marshal(obj)

    if err != nil {

        fmt.Println(err)

    }

    fmt.Println(string(res))

}


func main() {

    Open("./example.json")

    book := Book{"test", "me"}

    fmt.Println(reflect.TypeOf(book).String())

    Add(book)

}

现在我想做的是在函数中传递该书对象或变量,Add当我尝试这样做时,它给了我一个错误。


cannot use book (type Book) as type string in argument to Add

那么如何解决它以及如何book在函数中将对象作为参数传递Add?


慕的地6264312
浏览 116回答 1
1回答

杨魅力

您的结构Book现在就像它自己的数据类型一样。如果您只想在函数中接受这种数据类型Add,则需要替换string为Book.所以代码看起来像这样:package mainimport "encoding/json"type Book struct {    Name   string    Author string}func Add(obj Book) {    res, err := json.Marshal(obj)    if err != nil {        fmt.Println(err)    }    fmt.Println(string(res))}func main() {    Open("./example.json")    book := Book{"test", "me"}    fmt.Println(reflect.TypeOf(book).String())    Add(book)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go