今天在手敲案例练习代码时出现了很多错误,写这篇笔记记录一下出现的错误和解决方案
- 在终端运行代码时报错:syntax error: unexpected newline in composite literal; possibly missing comma or }
检查代码发现在返回的account时缺少了逗号
return &account{
accountNo : accountNo
balance : balance
pwd : pwd
}
- 修改后又报错:not enough arguments in call to model.NewAccount,have (string),want (string, float64, string)
检查代码后发现是因为在account.go文件中构造函数使用工厂模式时接收的参数为string, float64, string,而在main.go文件中只传入了string一个参数
//工厂模式 构造函数
func NewAccount(accountNo string,balance float64,pwd string)*account{}
//main.go中传入参数
account := model.NewAccount("244957402")
- 报错:.\main.go:15:2: undefined: accountNo
检查和对照代码后发现调用SetBalance方法和Setpwd方法时不是通过定义的变量调用,而是通过新建的结构体调用,同理在调用GetBalance方法和Getpwd方法时也是如此
accountNo.SetBalance(60000)
accountNo.Setpwd("123456")
fmt.Println("account.balance = ",accountNo.GetBalance(), "account.pwd = ",accountNo.Getpwd())
- 报错:..\model\account.go:47:9: too many return values,have (float64),want ()
..\model\account.go:51:9: too many return values,have (string),want ()
检查代码后发现在account.go中定义GetBalance方法和Getpwd方法时后面忘记了加()
func (accountNo *account) GetBalance (float64){}
func (accountNo *account) Getpwd (string){}