我正在尝试一种具有值和指针接收器功能的简单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”))用作值
答案 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)