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

如皋建设局网站wordpress调取文章列表

如皋建设局网站,wordpress调取文章列表,wordpress sql自定义菜单,哪里有网站建设流程前言 在 Go 语言中#xff0c;结构体#xff08;struct#xff09;是一种自定义的数据类型#xff0c;将多个不同类型的字段#xff08;fields#xff09;组合在一起 结构体通常用于模拟真实世界对象的属性和行为 定义结构体 可以使用 type 关键字和 struct 关键字来定…前言 在 Go 语言中结构体struct是一种自定义的数据类型将多个不同类型的字段fields组合在一起 结构体通常用于模拟真实世界对象的属性和行为 定义结构体 可以使用 type 关键字和 struct 关键字来定义一个结构体 type Person struct {Name stringAge int }在这个示例中我们定义了一个名为 Person 的结构体它有两个字段Name 是 string 类型Age 是 int 类型 常见的还有匿名结构体看例子就明白了 stu : struct{ name string }{Allen} fmt.Println(stu.name) // Allen实例化 创建结构体的实例或对象的过程称为实例化可以通过结构体类型声明新的变量 func main() {// 实例化结构体p : Person{Name: Alice, Age: 30}// 访问结构体字段fmt.Println(p.Name) // 输出 Alicefmt.Println(p.Age) // 输出 30 }在这个示例中p 是 Person 类型的变量我们使用结构体字面量来初始化它的字段 结构体指针 可以使用 符号创建指向结构体的指针。通过指针可以访问或修改结构体的字段 func main() {// 创建指向 Person 结构体的指针p : Person{Name: Bob, Age: 25}// 通过指针访问结构体的字段fmt.Println(p.Name) // 输出 Bobfmt.Println(p.Age) // 输出 25// 通过指针修改结构体的字段p.Age 26fmt.Println(p.Age) // 输出 26 }p 是一个指向 Person 结构体的指针。即使我们使用了指针我们仍然可以使用点操作符.来访问或修改字段这是因为 Go 语言提供了指针的隐式解引用 结构体指针它们用于直接访问或修改结构体实例的字段和方法而不是通过副本。这在以下情况中很有用 当你需要在方法或函数中修改结构体的字段时当结构体很大传递指针比复制整个结构体更高效时当你希望确保结构体的所有实例共享相同的数据时例如当多个变量需要指向同一个结构体实例以便可以同步状态变化 结构体方法 可以为结构体定义方法。方法是一种附加到特定类型如结构体的函数。方法的定义与普通函数类似但它在函数名称之前有一个额外的参数称为接收器receiver它指定了方法所附加的类型 func (p Person) SayHello() {fmt.Printf(Hi, my name is %s and I am %d years old.\n, p.Name, p.Age) }func main() {p : Person{Name: Eve, Age: 22}p.SayHello() // 输出 Hi, my name is Eve and I am 22 years old. }我们为 Person 结构体定义了一个 SayHello 方法该方法可以通过 Person 类型的任何实例来调用 结构体字段标签 结构体字段可以通过字段标签field tags提供元数据。这些标签可以被用于多种用途例如序列化和反序列化 JSON 数据、配置数据库字段映射以及进行验证等 字段标签是在结构体字段声明后以字符串形式提供的并且总是放在反引号 () 之间。一个字段可以有多个标签每个标签通常由一个特定的库或框架解析 下面是一个 JSON 序列化的例子我们定义了一个结构体并使用了 JSON 标签 type Person struct {Name string json:nameAge int json:ageCity string json:city,omitempty }在这个例子中Person 结构体有三个字段Name、Age 和 City。每个字段后面都跟有一个 JSON 标签。这些标签指示 encoding/json 标准库如何序列化和反序列化结构体到 JSON 格式 json:“name” 表明 JSON 对象中对应的键是 namejson:“age” 表明 JSON 对象中对应的键是 agejson:“city,omitempty” 表明 JSON 对象中对应的键是 city并且如果 City 字段的值为零值在这里是空字符串则在序列化的 JSON 对象中省略该键 使用标准库的 encoding/json 包来序列化结构体时这些标签就会发挥作用 func main() {p : Person{Name: Alice, Age: 30, City: Wonderland}jsonData, _ : json.Marshal(p)fmt.Println(string(jsonData)) // 输出: {name:Alice,age:30,city:Wonderland}p Person{Name: Bob, Age: 25}jsonData, _ json.Marshal(p)fmt.Println(string(jsonData)) // 输出: {name:Bob,age:25} 注意没有 city 字段 }在这个序列化的例子中omitempty 选项导致 City 字段在 Bob 的情况下被省略因为它是空字符串 继承 是通过组合composition来实现的而不是像在其他一些面向对象编程语言中那样直接使用继承关键字。Go 的设计哲学鼓励组合而不是继承这意味着一个结构体可以包含嵌入另一个结构体的字段从而能够使用嵌入结构体的方法和字段实现类似继承的行为 这是一个使用结构体组合来实现继承行为的例子 type Animal struct {Name string }func (a *Animal) Speak() {fmt.Println(a.Name makes a noise.) }type Dog struct {Animal // 嵌入 Animal 结构体 }func (d *Dog) Speak() {fmt.Println(d.Name barks.) }func main() {dog : Dog{}dog.Name Fidodog.Speak() // 输出: Fido barks. }在这里Animal 是一个基本的结构体有一个 Speak 方法。Dog 结构体通过嵌入 Animal 继承了它的字段和方法。然而Dog 也定义了它自己的 Speak 方法这展示了 Go 中的方法覆盖类似于其他语言中的重写 自定义类型 可以通过类型声明type declaration来定义一个新的自定义类型。自定义类型基于现有的类型但它有自己的独立名称和方法这可以使代码更加清晰和类型安全 以下是创建自定义类型的基本语法 type MyCustomType ExistingTypeMyCustomType 是新定义的类型名称而 ExistingType 是已有的类型可以是内置类型如 int、string 等也可以是复杂类型如结构体、接口等 下面是几个自定义类型的例子 基于内置类型的自定义类型 // 定义一个基于 int 的自定义类型 type MyInt intfunc main() {var x MyInt 5fmt.Println(x) // 输出: 5 }基于结构体的自定义类型 // 定义一个结构体 type Person struct {Name stringAge int }// 基于结构体的自定义类型 type Employee Personfunc main() {e : Employee{Name: John, Age: 30}fmt.Println(e) // 输出: {John 30} }为自定义类型添加方法 // 基于 float64 的自定义类型 type Distance float64// 为 Distance 类型定义一个方法 func (d Distance) String() string {return fmt.Sprintf(%f meters, d) }func main() {var d Distance 5.5fmt.Println(d.String()) // 输出: 5.500000 meters }定义自定义类型允许你在类型上附加方法使其表现得更像面向对象编程中的类。此外自定义类型通过类型名称来提供更多上下文这有助于代码的可读性和维护性 关于类型别名从 Go 1.9 版本开始支持类型别名 类型别名在 Go 语言中是通过使用 符号在类型定义中引入的。它们在语义上与原始类型相同而不是创建一个新的类型。类型别名主要用于代码重构允许开发者逐步更改类型的名称而不破坏现有的代码 这是一个类型别名的示例 package mainimport fmt// 定义一个新的类型 type MyOriginalInt int// 创建 MyOriginalInt 的别名 type MyIntAlias MyOriginalIntfunc main() {var a MyOriginalInt 6var b MyIntAlias a // 因为是别名所以这是合法的其实就是 var b afmt.Println(a, b) // 输出: 6 6 }MyIntAlias 是 MyOriginalInt 的别名所以它们可以互换使用。这意味着 MyIntAlias 的变量可以被视为 MyOriginalInt 类型的变量反之亦然 类型别名的一个重要用途是在进行大规模重构时特别是在为类型进行重命名时它可以帮助保持代码库的向后兼容性。例如如果一个库的公共类型名称需要更改可以使用类型别名保持与旧代码的兼容性同时推进新名称的使用
http://www.zqtcl.cn/news/685825/

相关文章:

  • 大型旅游网站骏驰网站开发
  • 有心学做网站两学一做知识竞赛试题网站
  • 西宁圆井模板我自己做的网站怎么做网站能快速赚钱
  • 根据网站集约化建设的要求直流分公司四川建设部网站
  • 网站优化平台有哪些遵义网站开发的公司有哪些
  • 推荐一下网站谢谢微盟微商城怎么样
  • 网站建设的技术指标网站做好第二年要多少钱
  • 工业设计东莞网站建设WordPress网络功能
  • 网站pv多少可以企业网站托管常见问题
  • 深圳有哪些网站建设沈阳做机床的公司网站
  • 2022年网站能用的wordpress 客户端使用
  • 社交网站建设内容如何制作橡皮泥 简单
  • 简述网站的制作流程wordpress定制分类
  • 如何自建购物网站wordpress文章编辑插件
  • 网站策划机构建筑网站、
  • 邹平做网站的公司标志设计图片大全简单
  • 广东省建设厅官方网站多少钱如何在虚拟机里面做网站
  • 上海免费网站建设模板做网站页面的软件
  • 做折页的网站个人网站有哪些
  • 服装网站建设内容wordpress媒体库只能列表
  • 北京好的做网站的公司东莞专业做淘宝网站
  • 网站结构怎么优化wordpress文章列表添加字段
  • 网站建设框架图长沙官网seo技术厂家
  • 电子商务网站建设主管的策划案html个人网站设计模板
  • 网站首页的head标签内做网站要学的教程
  • 网页设计教学网站江西省建设监督网站
  • 网站建设与发布需要什么提供网站制作公司哪家好
  • 西宁市城市道路建设规划网站探测器 东莞网站建设
  • 旅游村庄网站建设方案小程序制作价格
  • 网站地图制作软件机械加工网免费铺货