首页 > 其他分享 >Golang 基础语法的使用

Golang 基础语法的使用

时间:2023-09-17 11:14:18浏览次数:35  
标签:语法 Scanln CusList fmt 基础 id Golang Println self

  1 package customer
  2 
  3 import (
  4     "encoding/json"
  5     "fmt"
  6     "os"
  7 )
  8 
  9 type customer struct {
 10     Name    string
 11     Sex     string
 12     Age     int
 13     Phone   string
 14     Email   string
 15     Address string
 16 }
 17 
 18 type CusSlice []customer
 19 
 20 type MainDisplay struct {
 21     CusList CusSlice
 22 }
 23 
 24 func (self *MainDisplay) SaveJsonToFile() {
 25     dir, err := os.Getwd()
 26     fmt.Println("当前执行路径:", dir, err)
 27     file := dir + "/data.json"
 28     var fh *os.File
 29 
 30     fi, _ := os.Stat(file)
 31     if fi == nil {
 32         fh, _ = os.Create(file)
 33     } else {
 34         fh, _ = os.OpenFile(file, os.O_RDWR, 0666)
 35     }
 36     defer fh.Close()
 37 
 38     bytes, _ := json.Marshal(*self)
 39     fh.Write(bytes)
 40 }
 41 
 42 func (self *MainDisplay) LoadJsonByFile() {
 43     dir, err := os.Getwd()
 44     fmt.Println("当前执行路径:", dir, err)
 45     file := dir + "/data.json"
 46     var fh *os.File
 47 
 48     fi, _ := os.Stat(file)
 49     if fi == nil {
 50         fh, _ = os.Create(file)
 51     } else {
 52         fh, _ = os.OpenFile(file, os.O_RDWR, 0666)
 53     }
 54     defer fh.Close()
 55 
 56     bytes := make([]byte, fi.Size())
 57     fh.Seek(0, 0)
 58     fh.Read(bytes)
 59     json.Unmarshal(bytes, self)
 60 
 61 }
 62 
 63 func (self *MainDisplay) AddCustomer() {
 64     var Name string
 65     var Sex string
 66     var Age int
 67     var Phone string
 68     var Email string
 69     var Address string
 70 
 71     fmt.Print("请输入姓名:")
 72     fmt.Scanln(&Name)
 73     fmt.Print("请输入性别:")
 74     fmt.Scanln(&Sex)
 75     fmt.Print("请输入年龄:")
 76     fmt.Scanln(&Age)
 77     fmt.Print("请输入电话:")
 78     fmt.Scanln(&Phone)
 79     fmt.Print("请输入邮箱:")
 80     fmt.Scanln(&Email)
 81     fmt.Print("请输入住址:")
 82     fmt.Scanln(&Address)
 83 
 84     self.CusList = append(self.CusList, customer{Name, Sex, Age, Phone, Email, Address})
 85     fmt.Println("添加成功!")
 86     fmt.Println()
 87     fmt.Println()
 88     fmt.Println()
 89 }
 90 
 91 func (self *MainDisplay) ModifyCustomer() {
 92     var Name string
 93     var Sex string
 94     var Age int
 95     var Phone string
 96     var Email string
 97     var Address string
 98     var id int
 99 
100     fmt.Print("请输入要修改的序号:")
101     fmt.Scanln(&id)
102     if len(self.CusList) < id {
103         fmt.Println("修改失败!序列号不存在!")
104         fmt.Println()
105         fmt.Println()
106         fmt.Println()
107         return
108     }
109     fmt.Print("请输入修改后的姓名:")
110     fmt.Scanln(&Name)
111     fmt.Print("请输入修改后的性别:")
112     fmt.Scanln(&Sex)
113     fmt.Print("请输入修改后的年龄:")
114     fmt.Scanln(&Age)
115     fmt.Print("请输入修改后的电话:")
116     fmt.Scanln(&Phone)
117     fmt.Print("请输入修改后的邮箱:")
118     fmt.Scanln(&Email)
119     fmt.Print("请输入修改后的住址:")
120     fmt.Scanln(&Address)
121 
122     if Name == "" {
123         Name = self.CusList[id-1].Name
124     }
125     if Sex == "" {
126         Sex = self.CusList[id-1].Sex
127     }
128     if Age == 0 {
129         Age = self.CusList[id-1].Age
130     }
131     if Phone == "" {
132         Phone = self.CusList[id-1].Phone
133     }
134     if Email == "" {
135         Email = self.CusList[id-1].Email
136     }
137     if Address == "" {
138         Address = self.CusList[id-1].Address
139     }
140     self.CusList[id-1].Name = Name
141     self.CusList[id-1].Sex = Sex
142     self.CusList[id-1].Age = Age
143     self.CusList[id-1].Phone = Phone
144     self.CusList[id-1].Email = Email
145     self.CusList[id-1].Address = Address
146 
147     fmt.Println("修改成功!")
148     fmt.Println()
149     fmt.Println()
150     fmt.Println()
151 }
152 
153 func (self *MainDisplay) ShowCustomer() {
154 
155     fmt.Printf("%20v%20v%20v%20v%20v%20v%20v\n\n", "Sort", "Name", "Sex", "Age", "Phone", "Email", "Address")
156     for index, val := range self.CusList {
157         fmt.Printf("%20v%20v%20v%20v%20v%20v%20v\n", index+1, val.Name, val.Sex, val.Age, val.Phone, val.Email, val.Address)
158     }
159     fmt.Println()
160     fmt.Println()
161     fmt.Println()
162 }
163 
164 func (self *MainDisplay) DeleteCustomer() {
165     var id int
166 
167     fmt.Print("请输入要修改的序号:")
168     fmt.Scanln(&id)
169     if len(self.CusList) < id {
170         fmt.Println("修改失败!序列号不存在!")
171         fmt.Println()
172         fmt.Println()
173         fmt.Println()
174         return
175     }
176     choise1 := ""
177     fmt.Printf("是否确认删除'%v'退出?(y/n)", self.CusList[id-1].Name)
178     fmt.Scanln(&choise1)
179     if choise1 == "y" {
180         for i := id; i < len(self.CusList); i++ {
181             self.CusList[i-1] = self.CusList[i]
182         }
183         self.CusList = self.CusList[:len(self.CusList)-2]
184     }
185     fmt.Println()
186     fmt.Println()
187     fmt.Println()
188 
189 }
190 
191 func (self *MainDisplay) ViewMain() {
192 
193     self.LoadJsonByFile()
194 
195 mainfor:
196     for {
197         var choise int
198         fmt.Println("-----------------客户信息管理系统-----------------")
199         fmt.Println("                 1. 客 户 列 表")
200         fmt.Println("                 2. 添 加 客 户")
201         fmt.Println("                 3. 修 改 客 户")
202         fmt.Println("                 4. 删 除 客 户")
203         fmt.Println("                 5. 退      出")
204         fmt.Print("清选择(1~5)操作:")
205         fmt.Scanln(&choise)
206         switch choise {
207         case 1:
208             self.ShowCustomer()
209         case 2:
210             self.AddCustomer()
211         case 3:
212             self.ModifyCustomer()
213         case 4:
214             self.DeleteCustomer()
215         case 5:
216             choise1 := ""
217             fmt.Print("是否确认退出?(y/n)")
218             fmt.Scanln(&choise1)
219             if choise1 == "y" {
220                 break mainfor
221             }
222             fmt.Println()
223             fmt.Println()
224             fmt.Println()
225 
226         default:
227             fmt.Println("输入错误,请重新选择!")
228             fmt.Println()
229             fmt.Println()
230             fmt.Println()
231         }
232     }
233     self.SaveJsonToFile()
234 }
235 
236 func CustomerFactory() *MainDisplay {
237     return &MainDisplay{}
238 }
239 
240 func TestCustomer() {
241     m := CustomerFactory()
242     m.ViewMain()
243 }

 

标签:语法,Scanln,CusList,fmt,基础,id,Golang,Println,self
From: https://www.cnblogs.com/watermeloncode/p/17707953.html

相关文章

  • 一文读懂Java缓存池:从基础到高级应用
    什么是缓存池Java缓存池是一种用于管理缓存数据的机制,它提供了一种高效的方式来存储和获取数据。缓存池的作用是减少对外部资源的访问次数,提高系统的性能和响应速度。实例说明newInteger(123)与Integer.valueOf(123)的区别在于:newInteger(123)每次都会新建一个对象Integer.v......
  • 【matplotlib基础】--手绘风格
    Matplotlib中有一个很有趣的手绘风格。如果不是特别严肃的分析报告,使用这个风格能给枯燥的数据分析图表带来一些活泼的感觉。使用手绘风格非常简单,本篇主要手绘风格的效果以及如何配置中文的支持。1.中文支持Matplotlib的手绘风格默认是不支持中文的,中文在图形中会显示成方......
  • 学信息系统项目管理师第4版系列08_管理科学基础
    1. 科学管理的实质1.1. 反对凭经验、直觉、主观判断进行管理1.2. 主张用最好的方法、最少的时间和支出,达到最高的工作效率和最大的效果2. 资金的时间价值与等值计算2.1. 资金的时间价值是指不同时间发生的等额资金在价值上的差别2.2. 把资金存入银行,经过一段时间后也......
  • 【php基础】PHP表单验证03
    PHP获取表单·$_GET数组获取GET方式提交的内容·$_POST数组获取POST方式提交的内容·$_COOKIE数组获取COOKIE·$_REQUEST数组获取GET|POST|COOKIE 示例:1、GET数组获取GET方式提交的内容HTML表单:<!DOCTYPEhtml><html><head><title>GE......
  • 14 OSPF基础
    由于静态路由由网络管理员手工配置,因此当网络发生变化时,静态路由需要手动调整,这制约了静态路由在现网大规模的应用。动态路由协议因其灵活性高、可靠性好、易于扩展等特点被广泛应用于现网。在动态路由协议之中,OSPF(OpenShortestPathFirst,开放式最短路径优先)协议是使用场景非常......
  • 【php基础】正则表达式04
    1、正则表达式的介绍2、正则表达式的语法一、正则表达式的介绍正则表达式的介绍·正则表达式,又称规则表达式,通过一种特殊的语言来挑选符合条件的数据·在代码中简写,regex、regexp、RE·计算机科学的一个概念,通常被用来检索、替换那些符合某个模式(规则)的......
  • 11.虚拟桌面基础设施: 使用OpenStack的Horizon模块,创建一个虚拟桌面基础设施,允许用户
    使用OpenStack的Horizon模块创建虚拟桌面基础设施可以让用户访问虚拟桌面环境,这通常使用VNC或其他远程桌面协议来实现。Horizon是OpenStack的Web管理界面,用于管理和监控OpenStack云资源。以下是一个简化的示例,演示如何使用Horizon来构建这样一个虚拟桌面基础设施。注意:为了构建这......
  • ​ 合肥先进光源国家重大科技基础设施项目及配套工程启动会纪念
    ​合肥先进光源国家重大科技基础设施项目及配套工程启动会纪念卡西莫多 合肥长丰岗集里肥鸭从此别泥塘先平场地设围栏进而工地筑基忙光阴似箭指日争源流汇智山水长国器西北扩新地家校又添新区园重器托举有群力大步穿梭两地间科教兴邦大国策技术盈身坦荡行基坑从......
  • Java基础-环境搭建
    目录JDK介绍JDK下载JDK安装JDK环境配置JRE环境配置内容JDK介绍JDK(Java开发工具包)提供了构建所有面向Java平台的应用程序的基础。JDK包括执行各种任务的各种工具和实用程序,包括将源代码编译成字节码、打包应用程序、启动Java虚拟机(JVM)和管理Java应用程序的运......
  • 网络基础
    网络概述:硬件方面:通过介质将网络设备和终端进行连接介质:双绞线、光纤、电磁波等软件方面:操作系统、应用软件、应用程序互相通讯网络最最终目的:实现资源共享、信息传递网络的组成:术语备注设备Device介质Media消息/报文Message/Data协议Protocol......