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){}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,封装是面向对象编程的重要概念之一,它允许将数据和方法封装在一个类中,通过访问控制来保护数据的安全性。以下是Python封装注意事项: 1. 使用命名约定:在Python中,通过使用下划线来表示属性或方法的访问级别。以单下划线开头的属性或方法被视为受保护的,应该在类内部或子类中使用。以双下划线开头的属性或方法被视为私有的,只能在类内部使用。 2. 使用@property装饰器:@property装饰器可以将方法转换为属性,使其在访问时表现为属性而不是方法。这样可以隐藏底层实现细节,并提供更好的封装性。 3. 使用getter和setter方法:通过定义getter和setter方法,可以控制对属性的访问和修改。这样可以在修改属性时进行验证或执行其他操作,增加了灵活性和安全性。 4. 避免直接访问私有属性:私有属性应该通过公共方法来访问和修改,而不是直接访问。这样可以确保对属性的访问受到限制,并且可以在需要时进行验证或其他处理。 5. 使用类方法和静态方法:类方法和静态方法可以在不创建实例的情况下调用,可以用于封装与类相关的操作。类方法使用@classmethod装饰器定义,静态方法使用@staticmethod装饰器定义。 6. 文档化类和方法:为了提高代码的可读性和可维护性,应该为类和方法添加适当的文档字符串。文档字符串应该清楚地描述类和方法的功能、参数和返回值等信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值