当前位置: 首页 > 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/631522/

相关文章:

  • 网站可以换虚拟主机吗部门做网站优点
  • 如何做分类网站信息营销莱芜网页定制
  • 班级网站建设感想中国做视频网站有哪些
  • 做刷票的网站wordpress图片链接插件
  • 给客户做网站图片侵权沈阳做网站的地方
  • 网站开发步骤规划蓝天云免费空间主机
  • 网站字体规范wordpress找不到页面内容编辑
  • 静态网站建设参考文献茂名营销型网站制作公司
  • 君山区建设局网站风铃微网站怎么做
  • 购物网站销售管理合肥网络推广平台
  • 网站建设规划书txt微盘注册帐号
  • 小说网站开发实训报告企业网盘收费标准
  • mvc网站开发医疗医院网站建设
  • 天津市建设厅官方网站wordpress设置404
  • 贵阳好的网站建设免费正能量网站下载ww
  • 免费学习的网站平台自建站seo如何做
  • 海南三亚做网站公众号版面设计创意
  • 学校网站建设目的与意义合肥网页定制
  • 网站查询地址网站建设与维护费用
  • 做网站哪些软件比较好合肥外贸网站建设公司
  • 建网站需要哪些条件专业网站设计报价
  • 定制网站开发技术化妆品的网站布局设计图片大全
  • 网站模糊设计发布产品的免费平台有哪些
  • 网站建站什么目录桂林网站建设内容
  • 光明新区城市建设局网站长沙营销型网站制作费用
  • 网站建设制度制定wordpress主题哥
  • 门户网站的种类php网站开发实训心得
  • 流程图制作网页网络优化seo
  • 个人公益网站怎么制作wordpress flat theme
  • 做营销型网站的公司篇高端网站愿建设