首页 > 编程语言 >Golang struct 结构体 面向对象编程思想-抽象 理解抽象

Golang struct 结构体 面向对象编程思想-抽象 理解抽象

时间:2023-10-03 10:07:39浏览次数:36  
标签:account password struct money fmt 抽象 面向对象编程 Println 123456


我们在前面去定义一个结构体时候,实际上就是把一类事物的共有的属性(字段)和行为(方法)提取出来,形成一个物理模型(模板),这种研究问题的方法称为抽象。

Golang struct 结构体 面向对象编程思想-抽象 理解抽象_golang

当你将一类事物的属性和行为抽取出来之后,下一步就是将代码体现出来。下面就是模拟银行卡存款取款查询余额方式。

package main

import "fmt"

type Account struct {
	AccountNum string
	Password   string
	Balance    float64
}

func (account *Account) Cunqian(money float64, password string) {
	if account.Password != password {
		fmt.Println("用户名密码错误!")
		return
	}
	if money < 0 {
		fmt.Println("输入的金额不正确!")
		return
	}

	account.Balance += money
	fmt.Println("存款成功!")
}

func (account *Account) Quqian(money float64, password string) {
	if account.Password != password {
		fmt.Println("用户名密码错误!")
		return
	}
	if money < 0 || money > account.Balance {
		fmt.Println("输入的金额不正确!")
		return
	}

	account.Balance -= money
	fmt.Println("取款成功!")
}

func (account *Account) Chaxunyuer(password string) {
	if account.Password != password {
		fmt.Println("用户名密码错误!")
		return
	}

	fmt.Println("当前余额:", account.Balance)
}

func main() {
	a := &Account{
		AccountNum: "123456",
		Password:   "123456",
		Balance:    0,
	}
	a.Cunqian(12.3, "123456")
	a.Chaxunyuer("123456")
	a.Quqian(10.2, "123456")
	a.Chaxunyuer("123456")

}


存款成功!
当前余额: 12.3
取款成功!
当前余额: 2.1000000000000014

标签:account,password,struct,money,fmt,抽象,面向对象编程,Println,123456
From: https://blog.51cto.com/u_14035463/7689609

相关文章

  • pyqt5-QAbstractButton抽象按钮类
    1、介绍QAbstractButton,抽象按钮类。该类定义了按钮类型组件的常用方法和事件,是QPushButton按钮组件、QCheckBox多选按钮组件、QRadioButton单选按钮组件的直接父类。另一方面,该类直接继承QWidget类。2、基础使用setText(self,text:str)设置文本text(self)->str获取......
  • shiclient.exe是Microsoft Windows操作系统中的一个可执行文件,它是Shell Infrastructu
    shiclient.exe是MicrosoftWindows操作系统中的一个可执行文件,它是ShellInfrastructureClient的缩写。该程序负责处理WindowsShell(资源管理器)以及一些相关的操作。ShellInfrastructureClient(SIC)是Windows系统的一部分,它提供了Shell相关的功能和服务,包括任务栏、开始菜单、桌......
  • 抽象类和接口
    1.引言接口和抽象类是面向对象编程中的两个概念,用于实现代码的抽象和封装。2.抽象类2.1定义抽象类(AbstractClass)是用于实现部分行为的类,它不能被实例化。抽象类可以包含普通方法、抽象方法(只有方法签名,没有具体实现)和属性,但抽象类中的抽象方法必须在子类中被实现。抽象类......
  • [题解] CF1003E - Tree Constructing
    CF1003E-TreeConstructing题目传送门知识点:贪心题意给定\(n\)个顶点,问是否能够构造出一棵直径为\(d\)的树,且每个顶点的度数最多为\(k\)。思路我们要构造出一棵树,使得其直径长度一定为\(d\),那么我们可以先选择\(d+1\)个点,让这些点构成一条树链即可。接着,考虑......
  • JavaScript: Data Structures
      //JavaScriptDocument//file:1.js//edit:geovindu,GeovinDu/*varGeovinDu={firstName:"Geovin",lastName:"Du"};varstudent1={id:"12345678",courses:["ProgrammingI","Engli......
  • 抽象CurrentUser适配Http和Job场景
    前言获取当前请求用户的基础信息是很常见的,诸如当前用户Id,角色,有无访问权限等。通常我们可以直接使用HttpContext.User来拿到当前经过认证后的请求人信息。但是这样对于分层应用不太友好,需要安装AspNetCore.Http.Abstractions的包,这样对于这层(非Web层)来讲也有所侵入了。Curren......
  • Go每日一库之49:mapstructure
    简介mapstructure用于将通用的map[string]interface{}解码到对应的Go结构体中,或者执行相反的操作。很多时候,解析来自多种源头的数据流时,我们一般事先并不知道他们对应的具体类型。只有读取到一些字段之后才能做出判断。这时,我们可以先使用标准的encoding/json库将数据解码为map......
  • Social Infrastructure Information Systems Division, Hitachi Programming Contest
    A-HitachiString满足条件的串即为串长为偶数且相邻两个均为为hi,直接判断即可。代码:#include<iostream>#include<cstdio>#include<cstring>usingnamespacestd;constintN=15;intn;chars[N];intmain(){ scanf("%s",s+1); n=strlen(s+1); if(n&1) ......
  • 【JAVA】关于抽象类的概念
    个人主页:【......
  • CS61A: Structure and Interpretation of Computer Programs 笔记
    FunctionsEnvironmentDiagrams:左侧为Frames,右侧为Objects。Name类似变量名,它们存储在Frame中,指向各种各样的Objects,比如值或函数。一个Name同时只能指向一个Object,但可以改变自身指向,不受“类型”影响(Name根本没有固定的“类型”概念)。Assignment的过程是计算'='......