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

大学科研项目做网站新网站的宣传推广

大学科研项目做网站,新网站的宣传推广,站群 wordpress,网站安全和信息化建设Go语言中文网#xff0c;致力于每日分享编码、开源等知识#xff0c;欢迎关注我#xff0c;会有意想不到的收获#xff01;Go 支持面向对象吗#xff1f;Go 并不是完全面向对象的编程语言。Go 官网的 FAQ 回答了 Go 是否是面向对象语言#xff0c;摘录如下。可以说是致力于每日分享编码、开源等知识欢迎关注我会有意想不到的收获Go 支持面向对象吗Go 并不是完全面向对象的编程语言。Go 官网的 FAQ 回答了 Go 是否是面向对象语言摘录如下。可以说是也可以说不是。虽然 Go 有类型和方法支持面向对象的编程风格但却没有类型的层次结构。Go 中的“接口”概念提供了一种不同的方法我们认为它易于使用也更为普遍。Go 也可以将结构体嵌套使用这与子类化(Subclassing)类似但并不完全相同。此外Go 提供的特性比 C 或 Java 更为通用子类可以由任何类型的数据来定义甚至是内建类型(如简单的“未装箱的”整型)。这在结构体(类)中没有受到限制。在接下来的教程里我们会讨论如何使用 Go 来实现面向对象编程概念。与其它面向对象语言(如 Java)相比Go 有很多完全不同的特性。使用结构体而非类Go 不支持类而是提供了结构体。结构体中可以添加方法。这样可以将数据和操作数据的方法绑定在一起实现与类相似的效果。为了加深理解我们来编写一个示例吧。在示例中我们创建一个自定义包它帮助我们更好地理解结构体是如何有效地取代类的。在你的 Go 工作区创建一个名为 oop 的文件夹。在 opp 中再创建子文件夹 employee。在 employee 内创建一个名为 employee.go 的文件。文件夹结构会是这样workspacepath - oop - employee - employee.go请将 employee.go 里的内容替换为如下所示的代码。在上述程序里第 1 行指定了该文件属于 employee 包。而第 7 行声明了一个 Employee 结构体。在第 14 行结构体 Employee 添加了一个名为 LeavesRemaining 的方法。该方法会计算和显示员工的剩余休假数。于是现在我们有了一个结构体并绑定了结构体的方法这与类很相似。接着在 oop 文件夹里创建一个文件命名为 main.go。现在目录结构如下所示main.go 的内容如下所示我们在第 3 行引用了 employee 包。在 main()(第 12 行)我们调用了 Employee 的 LeavesRemaining() 方法。由于有自定义包这个程序不能在 go playground 上运行。你可以在你的本地运行在 workspacepath/bin/oop 下输入命令 go install opp程序会打印输出Sam Adolf has 10 leaves remaining使用 New() 函数而非构造器我们上面写的程序看起来没什么问题但还是有一些细节问题需要注意。我们看看当定义一个零值的 employee 结构体变量时会发生什么。将 main.go 的内容修改为如下代码我们的修改只是创建一个零值的 Employee 结构体变量(第 6 行)。该程序会输出has 0 leaves remaining你可以看到使用 Employee 创建的零值变量没有什么用。它没有合法的姓名也没有合理的休假细节。在像 Java 这样的 OOP 语言中是使用构造器来解决这种问题的。一个合法的对象必须使用参数化的构造器来创建。Go 并不支持构造器。如果某类型的零值不可用需要程序员来隐藏该类型避免从其他包直接访问。程序员应该提供一种名为 NewT(parameters) 的 函数按照要求来初始化 T 类型的变量。按照 Go 的惯例应该把创建 T 类型变量的函数命名为 NewT(parameters)。这就类似于构造器了。如果一个包只含有一种类型按照 Go 的惯例应该把函数命名为 New(parameters) 而不是 NewT(parameters)。让我修改一下原先的代码使得每当创建 employee 的时候它都是可用的。首先应该让 Employee 结构体不可引用然后创建一个 New 函数用于创建 Employee 结构体变量。在 employee.go 中输入下面代码我们进行了一些重要的修改。我们把 Employee 结构体的首字母改为小写 e也就是将 type Employee struct 改为了 type employee struct。通过这种方法我们把 employee 结构体变为了不可引用的防止其他包对它的访问。除非有特殊需求否则也要隐藏所有不可引用的结构体的所有字段这是 Go 的最佳实践。由于我们不会在外部包需要 employee 的字段因此我们也让这些字段无法引用。同样我们还修改了 LeavesRemaining() 的方法。现在由于 employee 不可引用因此不能在其他包内直接创建 Employee 类型的变量。于是我们在第 14 行提供了一个可引用的 New 函数该函数接收必要的参数返回一个新创建的 employee 结构体变量。这个程序还需要一些必要的修改但现在先运行这个程序理解一下当前的修改。如果运行当前程序编译器会报错如下所示go/src/constructor/main.go:6: undefined: employee.Employee这是因为我们将 Employee 设置为不可引用因此编译器会报错提示该类型没有在 main.go 中定义。很完美正如我们期望的一样其他包现在不能轻易创建零值的 employee 变量了。我们成功地避免了创建不可用的 employee 结构体变量。现在创建 employee 变量的唯一方法就是使用 New 函数。如下所示修改 main.go 里的内容。该文件唯一的修改就是第 6 行。通过向 New 函数传入所需变量我们创建了一个新的 employee 结构体变量。下面是修改后的两个文件的内容。main.go运行该程序会输出Sam Adolf has 10 leaves remaining现在你能明白了虽然 Go 不支持类但结构体能够很好地取代类而以 New(parameters) 签名的方法可以替代构造器。关于 Go 中的类和构造器到此结束。祝你愉快。上一教程 - 「GCTT 出品」Go 系列教程——25. Mutex下一教程 - 组合取代继承历史文章「GCTT 出品」Go 系列教程——1. 介绍与安装「GCTT 出品」Go 系列教程——2. Hello World「GCTT 出品」Go 系列教程——3. 变量「GCTT 出品」Go 系列教程——4. 类型「GCTT 出品」Go 系列教程——5. 常量「GCTT 出品」Go 系列教程——6. 函数(Function)「GCTT 出品」Go 系列教程——7. 包Go 系列教程——8. if-else 语句「GCTT 出品」Go 系列教程——9. 循环「GCTT 出品」Go 系列教程——10. switch 语句「GCTT 出品」Go 系列教程——11. 数组和切片「GCTT 出品」Go 系列教程——12. 可变参数函数「GCTT 出品」Go 系列教程——13. Maps「GCTT 出品」Go 系列教程——14. 字符串「GCTT 出品」Go 系列教程——15. 指针「GCTT 出品」Go 系列教程——16. 结构体这一篇就够「GCTT 出品」Go 系列教程——17. 超全的方法教程「GCTT 出品」Go 系列教程——18. 接口(一)「GCTT 出品」Go 系列教程——19. 接口(二)「GCTT 出品」Go 系列教程——20. 并发入门「GCTT 出品」Go 系列教程——21. Go 协程「GCTT 出品」Go 系列教程——22. 信道(channel)「GCTT 出品」Go 系列教程——23. 缓冲信道和工作池「GCTT 出品」Go 系列教程——24. Select「GCTT 出品」Go 系列教程——25. Mutex
http://www.pierceye.com/news/512675/

相关文章:

  • 清丰网站建设百度推广建设网站是不是合发
  • 邢台12345网站哪个公司的装饰设计公司
  • 嘉兴网嘉兴网站建设手机网站管理软件
  • 网站主色调简介怎么说本地常州微信网站建设
  • 电子商务网站数据库建设怎样推广一个网站
  • illustrator 学习网站wordpress外链产品
  • 电脑端网站一般做多宽最好网页游戏制作成本
  • 怎样做好手机网站建设wordpress开启xml rpc
  • 泉州企业网站建设公司做外贸要建什么网站
  • 找人做网站价格永城网站设计公司
  • 如何让网站做网页适配深圳市门户网站建设多少钱
  • 中金超钒 网站建设淘客推广方法
  • 网站建设的基本流程域名备案需要哪些资料
  • 怎么查找网站死链怎么自己做微信推送新闻
  • 做网站的人能看到浏览的人的信息吗怎么刷网站权重
  • 有了域名搭建网站详细步骤服务外包有哪些
  • 外贸网站样式传扬互动网站建设公司
  • 企业网站建设需要哪些资料信息免费推广工具
  • 网站怎么更新网页内容如何把自己的产品放到网上卖
  • jQuery网站建设中倒计时代码提高工作效率的重要性
  • 网站建设业务介绍深圳观澜网站建设
  • 最简单的做网站网站开发项目需求文档
  • wordpress网站打开速度小程序搜索排名帝搜sem880官网
  • 台州做网站公司企业网站seo策略
  • 专业网站建设推广网络营销推广方法和手段有哪些
  • 莘县做网站推广2345浏览器官方网站
  • 深圳网站建设公司为什mrskinlove wordpress
  • html 网站建设中模板网络营销推广与策划
  • 企业管理网站模板asp.net做电商网站设计
  • 萧山建站wordpress主题机制