如何将字符串作为参数传递给Golang指针接收器函数?

时间:2018-11-28 01:02:58

标签: go

我正在尝试一种具有值和指针接收器功能的简单Go结构。我无法将一个字符串作为参数传递给指针接收器函数来修改结构数据。有人可以帮忙吗?

代码:

package main

import (
   "fmt"
)

type book struct {
    author   string
    name     string
    category string
    price    int16
}

func (b book) greet() string {
    return "Welcome " + b.author
}

func (b *book) changeAuthor(author string) {
   b.author = author
}

func main() {
    book := book{author: "Arockia",
        name:     "Python shortcuts",
        category: "IT",
        price:    1500}
    fmt.Println(book.author)
    fmt.Println(book.greet())
    fmt.Println(book.changeAuthor("arulnathan"))
    fmt.Println(book.author)
}

错误:

  

。\ struct_sample.go:29:31:book.changeAuthor(string(“ arulnathan”))用作值

2 个答案:

答案 0 :(得分:3)

func (b *book) changeAuthor(author string) {
   b.author = author
}

changeAuthor没有返回类型。您不能使用Println或任何其他需要在您的情况下使用参数的函数/方法。

要解决此问题,首先您可以将您的作者更改为book.changeAuthor("arulnathan"),并将印刷品更改为book.author

答案 1 :(得分:0)

changeAuthor不返回任何内容时,您将无法打印。

book.changeAuthor("arulnathan")
fmt.Println(book.author)