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

怎样看网站做的好不好深圳集团网站建设专业

怎样看网站做的好不好,深圳集团网站建设专业,在阿里云备案网站通过,自己做网站系统在Go语言编程中#xff0c;方法#xff08;Method#xff09; 是附属于特定类型的函数#xff0c;使我们能够以面向对象的方式编写代码。通过方法#xff0c;我们可以更自然地对类型进行操作。本文将通过实际的代码示例#xff0c;深入探讨Go语言中方法的定义与使用。 一…在Go语言编程中方法Method 是附属于特定类型的函数使我们能够以面向对象的方式编写代码。通过方法我们可以更自然地对类型进行操作。本文将通过实际的代码示例深入探讨Go语言中方法的定义与使用。 一、准备工作 为了实践本文的内容我们需要先创建一个新的Go项目。 1. 创建项目目录 打开命令行导航到合适的目录下创建一个名为methodsAndInterfaces的文件夹 mkdir methodsAndInterfaces cd methodsAndInterfaces2. 初始化Go模块 在methodsAndInterfaces目录下运行以下命令初始化Go模块 go mod init methodsandinterfaces3. 创建main.go文件 在methodsAndInterfaces目录下创建一个名为main.go的文件输入以下内容 package mainimport fmt// 定义Product结构体 type Product struct {name, category stringprice float64 }func main() {// 创建Product指针的切片products : []*Product{{皮划艇, 水上运动, 275},{救生衣, 水上运动, 48.95},{足球, 足球运动, 19.50},}// 遍历并打印商品信息for _, p : range products {fmt.Println(名称, p.name, 分类, p.category, 价格, p.price)} }4. 运行程序 在命令行中确保当前目录是methodsAndInterfaces运行以下命令 go run .程序将输出 名称 皮划艇 分类 水上运动 价格 275 名称 救生衣 分类 水上运动 价格 48.95 名称 足球 分类 足球运动 价格 19.5二、定义和使用方法 1. 从函数到方法 首先我们来看一个普通的函数如何定义 // 定义一个函数接收*Product类型的参数 func printDetails(product *Product) {fmt.Println(名称, product.name, 分类, product.category, 价格, product.price) }在main函数中我们可以这样调用它 for _, p : range products {printDetails(p) // 调用函数 }2. 将函数转换为方法 现在我们将上述函数转换为Product类型的方法 // 定义一个方法作用于*Product类型 func (product *Product) printDetails() {fmt.Println(名称, product.name, 分类, product.category, 价格, product.price) }注意这里的(product *Product)部分这就是方法的接收者表示printDetails方法绑定到了*Product类型。 在main函数中调用方法的方式也有所不同 for _, p : range products {p.printDetails() // 调用方法 }这样我们就将函数转换为了方法调用时更加直观。 三、方法的参数和返回值 方法可以像函数一样拥有自己的参数和返回值。 1. 定义带参数和返回值的方法 我们为Product类型定义一个计算税后价格的方法 // 计算税后价格的方法 func (product *Product) calcTax(rate, threshold float64) float64 {if product.price threshold {return product.price (product.price * rate)}return product.price }rate税率threshold价格阈值超过该值才计算税 2. 在方法中调用另一个方法 修改printDetails方法调用calcTax方法 func (product *Product) printDetails() {finalPrice : product.calcTax(0.2, 100) // 计算税后价格fmt.Println(名称, product.name, 分类, product.category, 价格, finalPrice) }3. 运行结果 重新运行程序输出如下 名称 皮划艇 分类 水上运动 价格 330 名称 救生衣 分类 水上运动 价格 48.95 名称 足球 分类 足球运动 价格 19.5可以看到价格高于100的商品皮划艇被加上了20%的税费。 四、方法重载的限制 1. Go语言不支持方法重载 在Go语言中不支持方法重载。也就是说不能在同一个类型上定义多个同名的方法即使它们的参数不同。 2. 示例 如果尝试这样做 func (product *Product) printDetails() {// 方法体 }func (product *Product) printDetails(showPrice bool) {// 方法体 }编译器会报错 method redeclared: Product.printDetails3. 合理命名方法 为了避免冲突应为不同的方法使用不同的名称例如printBasicDetails和printFullDetails。 五、指针接收者和值接收者 1. 指针接收者 当方法的接收者是指针类型时可以通过值类型或指针类型的变量调用该方法Go会自动完成转换。 func (product *Product) printDetails() {// 方法体 }func main() {prod : Product{皮划艇, 水上运动, 275}prod.printDetails() // 自动转换为指针类型调用 }2. 值接收者 同样当方法的接收者是值类型时也可以通过指针类型的变量调用。 func (product Product) showCategory() {fmt.Println(分类, product.category) }func main() {prodPtr : Product{救生衣, 水上运动, 48.95}prodPtr.showCategory() // 自动解引用调用值接收者的方法 }3. 选择接收者类型 指针接收者需要修改接收者或者接收者包含大量数据避免拷贝。值接收者接收者为基本类型方法不需要修改接收者状态。 六、为类型别名定义方法 1. 定义类型别名 我们可以使用type关键字为现有类型创建别名然后为其定义方法。 // 定义ProductList类型表示Product的切片 type ProductList []Product2. 为类型别名定义方法 // 计算各分类商品总价的方法 func (products ProductList) calcCategoryTotals() map[string]float64 {totals : make(map[string]float64)for _, p : range products {totals[p.category] p.price}return totals }3. 使用方法 func main() {products : ProductList{{皮划艇, 水上运动, 275},{救生衣, 水上运动, 48.95},{足球, 足球运动, 19.50},}totals : products.calcCategoryTotals()for category, total : range totals {fmt.Println(分类, category, 总价, total)} }4. 运行结果 分类 水上运动 总价 323.95 分类 足球运动 总价 19.5七、将类型和方法分离到不同文件 1. 项目结构的优化 随着项目的增长将所有代码写在一个文件中会使得代码难以维护。我们可以将类型和方法分离到不同的文件中但它们需要属于同一个包。 2. 创建product.go文件 package main// 定义Product结构体 type Product struct {name, category stringprice float64 }// 为Product定义方法 func (product *Product) printDetails() {fmt.Println(名称, product.name, 分类, product.category, 价格, product.price) }3. 创建service.go文件 package main// 定义Service结构体 type Service struct {description stringdurationMonths intmonthlyFee float64 }// 为Service定义方法 func (service *Service) printDetails() {totalFee : service.monthlyFee * float64(service.durationMonths)fmt.Println(服务, service.description, 总费用, totalFee) }4. 修改main.go文件 package mainfunc main() {product : Product{皮划艇, 水上运动, 275}service : Service{船只保险, 12, 89.50}product.printDetails()service.printDetails() }5. 运行结果 名称 皮划艇 分类 水上运动 价格 275 服务 船只保险 总费用 1074通过将代码拆分到不同的文件中我们的项目结构更加清晰代码维护也更方便。 八、总结与补充 本文详细介绍了Go语言中方法的定义和使用包括 将函数转换为方法方法的参数和返回值方法重载的限制指针接收者和值接收者为类型别名定义方法将类型和方法分离到不同文件
http://www.w-s-a.com/news/594564/

相关文章:

  • 红鱼洞水库建设管理局网站左右左布局网站建设
  • 手机网站建设地址做网站公
  • 贵州建设厅网站首页网络公司除了做网站
  • 运动鞋建设网站前的市场分析wordpress 搜索框代码
  • app开发网站开发教程平台网站开发的税率
  • 百度网站优化排名加强服务保障满足群众急需i
  • 宁夏建设职业技术学院网站安徽网站优化建设
  • 四川关于工程建设网站硬盘做网站空间
  • 桂林网站制作培训学校外包seo公司
  • 莱州网站建设方案北京装修公司口碑
  • 大型网站建设济南兴田德润团队怎么样韩国女足出线了吗
  • 南通做网站找谁重庆网络推广网站推广
  • ps网站主页按钮怎么做怎样做网站的用户分析
  • 哪个网站做黑色星期五订酒店活动公司网络营销推广软件
  • 岳阳新网网站建设有限公司网页设计基础考试题目
  • 辽宁响应式网站费用海外平台有哪些
  • 杨凌规划建设局网站网站后台建设怎么进入
  • 有赞商城网站建设企业管理咨询是做什么的
  • 提供衡水网站建设中国石化工程建设有限公司邮政编码
  • 大芬地铁站附近做网站工业设计公司报价
  • 建设网站最强永年网站建设
  • 网站分站代理加盟wordpress国内工作室主题
  • 东营远见网站建设公司服装网站建设内容
  • 互助平台网站建设费用百度seo优化怎么做
  • lol英雄介绍网站模板工商局网上注册
  • 电商网站运营策划什么样的网站容易做seo
  • 网站备案需要什么流程怎么创建小程序卖东西
  • 陇西网站建设 室内设计持啊传媒企业推广
  • 连云港做网站制作首选公司如何让单位网站做防护
  • wordpress企业网站源码开发网站用什么工具做设计