当前位置: 首页 > news >正文

Golang实现简单的HTTP服务,响应RESTful请求判断形状大小

题目要求:

题目
1.shape 接口有面积Area() float64和 周长Perimeter()fioat64 两个法。为`Circle` `Rectangle`实现`shape` 接口。
2.实现isGreater(shape1,shape2 shape)boo1 函数,用于比较两个形状的大小,并使用单元测试验证

3.实现http.Handler,作为HTTP服务比较Circle与 Rectangle 的大小。并使用香户端验证

请求示例:

curl --request POST \
--url http://localhost:8080/shape/isGreater \
--header 'content-type: application/json' \
--data '{"Shape1": {"Radius": 3}, "Shape2": {"Width": 2, "Height": 3}}'


代码

package mainimport ("encoding/json""fmt""log""net/http"
)const pi = 3.14type Shape interface {Area() float64Perimeter() float64
}type Circle struct {Radius float64
}type Rectangle struct {Height float64Width  float64
}func (c Circle) Area() float64 {return pi * c.Radius * c.Radius
}func (c Circle) Perimeter() float64 {return 2 * pi * c.Radius
}func (r Rectangle) Area() float64 {return r.Height * r.Width
}func (r Rectangle) Perimeter() float64 {return 2 * (r.Height + r.Width)
}func isGreater(s1, s2 Shape) bool {if s1.Area() > s2.Area() {fmt.Println("C1:%v is greater than C2:%v", s1, s2)return true}fmt.Println("C1:%v is less than C2:%v", s1, s2)return false
}type RequestData struct {Shape1 Circle    `json:"Shape1"`Shape2 Rectangle `json:"Shape2"`
}// CompareHandler 处理比较两个形状面积的HTTP请求
func CompareHandler(w http.ResponseWriter, r *http.Request) {var data RequestData// 从请求体中解码JSON数据到RequestData结构体中err := json.NewDecoder(r.Body).Decode(&data)if err != nil {// 如果解码失败,返回400 Bad Request错误http.Error(w, err.Error(), http.StatusBadRequest)return}// 比较两个形状的面积if isGreater(data.Shape1, data.Shape2) {// 如果圆形面积较大,返回 "Circle is larger"fmt.Fprintf(w, "Circle is larger")} else {// 否则,返回 "Rectangle is larger"fmt.Fprintf(w, "Rectangle is larger")}
}func main() {http.HandleFunc("/shape/isGreater", CompareHandler)log.Fatal(http.ListenAndServe(":8080", nil))
}

结果:

相关文章:

Golang实现简单的HTTP服务,响应RESTful请求判断形状大小

题目要求: 题目 1.shape 接口有面积Area() float64和 周长Perimeter()fioat64 两个法。为Circle Rectangle实现shape 接口。 2.实现isGreater(shape1,shape2 shape)boo1 函数,用于比较两个形状的大小,并使用单元测试验证 3.实现http.Handle…...

使用C语言构建Lua库

Lua 本身是用 C 语言编写的,因此使用 C 编写扩展可以更好地与 Lua 引擎集成,减少性能瓶颈,同时C 语言提供了对底层硬件和操作系统功能的直接访问能力,让 Lua 可以通过 C 扩展来实现对文件系统、网络等高级功能的支持。因为C 语言非…...

愤怒的江小白,这几年怎么了?

近日,东方甄选和江小白的纠纷引发了广泛关注。 8月8日晚间,东方甄选直播间中,主播天权在带货某款白酒产品时突然对比点评江小白产品,称江小白“不是白酒”:“你现在去看江小白的包装,上面是没有‘白酒’这…...

Unity教程(十)Tile Palette搭建平台关卡

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…...

如何防止员工私自拷贝公司内部文件?安企神帮你解决泄密之忧

在企业运营中,保护公司的机密信息至关重要。员工私自拷贝公司内部文件不仅可能导致商业秘密泄露,还可能损害公司的声誉和经济利益。下面我们将介绍一些有效的方法来防止这种情况的发生,并以“安企神”软件为例进行详细说明。 1. 明确规章制度…...

Linux应急响应检查工具

最近一直在优化的 linux 应急检查脚本,也是我一直在应急使用的工具 https://github.com/sun977/linuxcheckshoot 脚本包含两个检查工具,详情可看 README 或者 Banner linuxGun.sh 和 linuxcheck.sh 区别 1、linuxcheck.sh 是完整的 linux 系统检查脚本,…...

CP AUTOSAR标准之EEPROMAbstraction(AUTOSAR_SWS_EEPROMAbstraction)(更新中……)

1 简介和功能概述 EEPROM抽象层的功能、API和配置(见图1)。   图1:内存硬件抽象层模块概览   EEPROM抽象(EA)从设备特定的寻址方案和分段中抽象出来,并为上层提供虚拟寻址方案和分段以及“几乎”无限数量的擦除周期。 3 相关文献 3.1 输入文件 [1]基础软件模块列表AUTO…...

重启redis服务时报错:Failed to start redis.service: Unit not found

重启redis服务时报错:Failed to start redis.service: Unit not found redis配合安全修改了bind和auth配置,重启的时候报错了,试了很多方法,最后才通过日志解决了 1 重新加载systemd 配置并启动: sudo systemctl da…...

Hive3:识别内部表、外部表及相互转换

一、识别方法 查看内部表信息 desc formatted stu;查看外部表信息 desc formatted test_ext1;通过Table Type对应的值,我们可以区分外部表和内部表。 二、相互转换 内部表转外部表 alter table stu set tblproperties(EXTERNALTRUE);外部表转内部表 alter ta…...

Android笔试面试题AI答之Kotlin(7)

文章目录 29.简述Kotlin 中的内联类,什么时候需要内联类?内联类的特点何时需要内联类示例注意 30. 什么是 Coroutine Scope,它与 Coroutine Context 有什么不同?Coroutine Scope(协程作用域)Coroutine Cont…...

高辐照整车太阳辐照模拟系统试验舱

概览 高辐照整车太阳辐照模拟系统试验是一种模拟太阳辐照对汽车及其零部件影响的测试方法,主要用于评估汽车在长期日照条件下的性能和可靠性。该试验通常遵循特定的标准,如GB/T 2423.24-1995、DIN 75220、BMW PR306等,旨在模拟自然环境中的太…...

如何制作优秀的年终总结PPT?

制作优秀的年终总结PPT,是每位职场人士在年底时的一项重要任务。 一个优秀的年终总结PPT不仅能够清晰地展示你过去一年的工作成果,还能让领导对你的工作能力和态度留下深刻印象。 下面,我将从几个方面详细讲解如何制作这样的PPT&#xff0c…...

架构师第六周作业

目录 1.部署3节点mongodb复制集。 1.1 安装mongodb 1.2 部署复制集 2.部署3节点Kafka集群 1.部署3节点mongodb复制集。 1.1 安装mongodb MongoDB安装包下载 下载地址:https://www.mongodb.com/try/download/community 版本根据需求选择,Mongodb6.…...

解密Java中介者模式:代码实例带你深入理解

1. 引言:中介者模式的重要性 在软件设计的世界里,模块间的相互依赖往往会导致系统的复杂性和维护难度的增加。中介者模式(Mediator Pattern)作为一种行为设计模式,它的出现就是为了解决这一问题。通过引入一个中介者对…...

19c做好这件事,大幅提升Data Pump工作效率

老司机遇到的新问题 expdp是Oracle 10g引入的数据导出工具,能够提供并行、压缩及元数据导出等更多的功能,在后续的版本中逐渐替代了传统的数据导出工具exp,是数据库开发运维常用的工具之一。在我的印象中,这个工具除了诸如大量的…...

6种常用的AR跟踪方法

增强现实 (AR) 是一项令人着迷的技术,可将虚拟内容与现实世界无缝集成。实现这种无缝集成的关键组件之一是跟踪。各种类型的跟踪用于确定 AR 内容在环境中的准确位置和方向。本文介绍 AR 最常见的6种跟踪方法。 NSDT工具推荐: Three.js AI纹理开发包 - Y…...

HBO引爆血腥浪漫,尺度全开必看的影视剧推荐

一直以来我们的僵尸题材电影风靡全国,同时西方也创作出吸血鬼题材、丧尸题材的影视剧也是层出不穷,那今天我们就来探讨下吸血鬼题材的影视剧。 吸血鬼题材的影视剧,一直以来都是观众的宠儿。从光鲜亮丽的《暮光之城》到狗血多角恋的《吸血鬼日…...

【kubernetes】pod控制器详解

一、pod控制器概述 1、Pod控制器作用 Pod控制器,是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源。 2、pod控制器…...

Zookeeper学习、Tomcat

怎样使用Zookeeper实现服务发现? 典型回答 服务发现是ZK的重要用途之一,当我们想要基于zk实现服务发现时,一般可以参考以下步骤:1. 向Zookeeper注册服务 服务提供者需要在Zookeeper上创建一个临时节点来注册自己的服务。节点的名…...

软件测试基础知识与面试题最强总结(2024版)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是软件? 软件是计算机系统中的程序和相关文件或文档的总称。 二、什么是软件测试? 说法一:使用人工或自动的手段来运…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络&#xf…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四&#xff…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...