如何在 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

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


犯罪嫌疑人X
浏览 142回答 1
1回答

慕田峪4524236

您的结构现在就像它自己的数据类型一样。如果只想在函数中接受此类数据类型,则需要替换为 。BookAddstringBook因此,代码将如下所示: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