当前位置:网站首页>go图书管理系统
go图书管理系统
2022-07-31 15:53:00 【漫漫行程路】
Go图书管理系统1.0
package main
import "fmt"
/* 使用函数实现一个简单的图书管理系统,每本书有书名作者,价格,上架信息 用户可以在控制台添加书籍,修改书籍信息,打印所有书籍列表 书:书名,作者,价格,上架信息 添加书籍 修改书籍 打印所有书籍 */
func bookmenu() {
fmt.Println("********************")
fmt.Println("1. add book")
fmt.Println("2. update book")
fmt.Println("3. show book")
fmt.Println("0. exit")
fmt.Println("********************")
}
func addbook() []string {
var bookname string
var author string
var price string
var data string
fmt.Println("please input bookname:")
fmt.Scanln(&bookname)
fmt.Println("please input author:")
fmt.Scanln(&author)
fmt.Println("please input price:")
fmt.Scanln(&price)
fmt.Println("please input data:")
fmt.Scanln(&data)
books_temp := [...]string{
bookname, author, price, data}
fmt.Println("add success", books_temp)
return books_temp[:]
}
func updatebook(booklist [][]string) {
fmt.Println(booklist)
for key, value := range booklist {
fmt.Println(key, value)
}
var inputnum int
var bookvaluenum int
var bookvalue string
fmt.Println("please input update num:")
fmt.Scanln(&inputnum)
fmt.Println("please input update book value num:")
fmt.Scanln(&bookvaluenum)
fmt.Println("please input update book value:")
fmt.Scanln(&bookvalue)
booklist[inputnum][bookvaluenum] = bookvalue
fmt.Println(booklist)
}
func main() {
book_list := [][]string{
}
// books_temp := []string{"go", "shuai", "58.8", "20220620"}
var num_input int
for {
bookmenu()
fmt.Println("please input num:")
fmt.Scanln(&num_input)
if num_input == 1 {
fmt.Println(1)
books_temp := addbook()
book_list = append(book_list, books_temp)
fmt.Println(book_list)
}
if num_input == 2 {
fmt.Println(3)
updatebook(book_list)
}
if num_input == 3 {
fmt.Println(3)
fmt.Println("all books :", book_list)
}
if num_input == 0 {
fmt.Println(0)
break
}
}
}
踩到的坑
scanf
刚开始输入的时候直接就是这样fmt.Scanf("please input bookname:%s", &bookname),然后很好奇为什么不能输入
查看源码
func Scanf(format string, a ...any) (n int, err error) {
return Fscanf(os.Stdin, format, a...)
}
发现是没问题的,但是我需要一行一行输入,所以放弃scanf
接着查看fmt.Scanln("%s",&bookname)
func Scanln(a ...any) (n int, err error) {
return Fscanln(os.Stdin, a...)
}
好家伙,原来前面不需要说明,嗯。搞定。
修改完毕,发现能输入了。所以在刚开始写go的时候,最好先写个小demo测试一下是否可行。
边栏推荐
- Oracle动态注册非1521端口
- 7. Summary of common interview questions
- Replication Latency Case (1) - Eventual Consistency
- [MySQL] Mysql paradigm and the role of foreign keys
- vb中如何连接mysql_vb怎么连接数据库「建议收藏」
- 贪吃蛇项目(简单)
- 【Meetup预告】OpenMLDB+OneFlow:链接特征工程到模型训练,加速机器学习模型开发
- Kubernetes principle analysis and practical application manual, too complete
- 基于ABP实现DDD
- Oracle dynamically registers non-1521 ports
猜你喜欢

mongo进入报错

第05章 存储引擎【1.MySQL架构篇】【MySQL高级】

【Meetup预告】OpenMLDB+OneFlow:链接特征工程到模型训练,加速机器学习模型开发

After Grafana is installed, the web opens and reports an error

radiobutton的使用

01 Encounter typescript, build environment

Qt实战案例(54)——利用QPixmap设计图片透明度

.NET 20th Anniversary Interview - Zhang Shanyou: How .NET technology empowers and changes the world

【TypeScript】深入学习TypeScript类型操作
![[MySQL] Mysql paradigm and the role of foreign keys](/img/9d/a4295de26683d7bca2b8e9d14f754b.png)
[MySQL] Mysql paradigm and the role of foreign keys
随机推荐
The use of border controls
.NET 20周年专访 - 张善友:.NET 技术是如何赋能并改变世界的
Bilateral filtering acceleration "recommended collection"
腾讯云部署----DevOps
软件实现AT命令操作过程
Dialogue with Zhuang Biaowei: The first lesson of open source
百度网盘网页版加速播放(有可用的网站吗)
Foreign media right, apple on May be true in inventory
浏览器自带的拾色器
Implementing distributed locks based on Redis (SETNX), case: Solving oversold orders under high concurrency
[TypeScript] In-depth study of TypeScript type operations
国内市场上的BI软件,到底有啥区别
数据表插入数据insert into
ASP.NET Core 产生连续 Guid
多主复制下处理写冲突(4)-多主复制拓扑
字符串反转的实现方法总结「建议收藏」
JVM参数解析 Xmx、Xms、Xmn、NewRatio、SurvivorRatio、PermSize、PrintGC「建议收藏」
Deployment application life cycle and Pod health check
Applicable Scenarios of Multi-Master Replication (1) - Multi-IDC
What is the difference between BI software in the domestic market?