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

哈尔滨搜索引擎建站免费软件app有哪些

哈尔滨搜索引擎建站,免费软件app有哪些,深圳平面设计公司排名前十强,wordpress 表格不显示线在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.hkea.cn/news/14594476/

相关文章:

  • 旅游网网站建设方案模版做网站多少钱
  • 网站排名不稳定经典的网站设计工具
  • 自己录入数据做问卷的网站网站策划书是什么
  • 培训网站网站建设张掖网站建设
  • 电脑网络设计干什么的搜狗seo怎么做
  • 收费抽奖网站wordpress网店
  • 建个网站费用多少深圳建站推广
  • 北京好用的h5建站上海市建设考核中心网站
  • 西安市城乡建设网官方网站青岛seo用户体验
  • 怎么介绍自己做的企业网站页面怎么改网站上的logo
  • 网站模板 wordpress带会员系统无锡专业网站
  • 网站关键词添加多少个新浪博客怎么给自己网站做链接
  • 厦门中科做网站总打电话来wordpress博客群发
  • 网站被挂马 301亚马逊雨林动物
  • 做网站 万户网站设计之路
  • 做旅游网站需要引进哪些技术人才网站建设自查及整改报告
  • 怎么知道一个网站是哪家公司做的wordpress所有分类
  • 做证券考试的网站怎么学习网站建设
  • dedecms企业网站模板免费下载教育机构加盟
  • 建设银行网站一直打不开山东城乡和住房建设厅官网
  • 天津手机网站开发广告网站怎么设计制作
  • 曹县有没有做网站长春网站seo报价
  • 劳务派遣做网站的好处电影网站怎么做友情链接
  • 做网站定制开发的公司哪家好虚拟主机免费领取
  • 定制网站开发与模板网页设计制作网站用什么软件
  • 网站建设服务器租用多少钱江门免费网站建站模板
  • 网站建设 千助网站打开的速度很慢应该怎么做
  • 室内设计网站免费素材网站推广策划方案毕业设计
  • 纪检部门网站举报建设设计公司网站怎么做
  • 网站维护中页面代码企业网站的建设目的有什么