Go语言 封装注意事项

在进行Go语言编程时,作者遇到了一系列错误,包括逗号遗漏导致的语法错误、工厂模式构造函数参数不匹配、未定义变量的调用以及方法返回值过多。通过检查和修改代码,作者解决了这些问题,包括修正结构体返回、确保正确传递参数以及调整方法签名和调用。

今天在手敲案例练习代码时出现了很多错误,写这篇笔记记录一下出现的错误和解决方案

  • 在终端运行代码时报错: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){}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值