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

宁波网站制作公司官网网站内容如何优化

宁波网站制作公司官网,网站内容如何优化,女排联赛排名,做网站的基本要素【Go入门】struct类型 struct Go语言中#xff0c;也和C或者其他语言一样#xff0c;我们可以声明新的类型#xff0c;作为其它类型的属性或字段的容器。例如#xff0c;我们可以创建一个自定义类型person代表一个人的实体。这个实体拥有属性#xff1a;姓名和年龄。这样…【Go入门】struct类型 struct Go语言中也和C或者其他语言一样我们可以声明新的类型作为其它类型的属性或字段的容器。例如我们可以创建一个自定义类型person代表一个人的实体。这个实体拥有属性姓名和年龄。这样的类型我们称之struct。如下代码所示: type person struct {name stringage int }看到了吗声明一个struct如此简单上面的类型包含有两个字段 一个string类型的字段name用来保存用户名称这个属性一个int类型的字段age,用来保存用户年龄这个属性 如何使用struct呢请看下面的代码 type person struct {name stringage int }var P person // P现在就是person类型的变量了P.name Astaxie // 赋值Astaxie给P的name属性. P.age 25 // 赋值25给变量P的age属性 fmt.Printf(The persons name is %s, P.name) // 访问P的name属性.除了上面这种P的声明使用之外还有另外几种声明使用方式 1.按照顺序提供初始化值 P : person{“Tom”, 25} 2.通过field:value的方式初始化这样可以任意顺序 P : person{age:24, name:“Tom”} 3.当然也可以通过new函数分配一个指针此处P的类型为*person P : new(person) 下面我们看一个完整的使用struct的例子 package mainimport fmt// 声明一个新的类型 type person struct {name stringage int }// 比较两个人的年龄返回年龄大的那个人并且返回年龄差 // struct也是传值的 func Older(p1, p2 person) (person, int) {if p1.agep2.age { // 比较p1和p2这两个人的年龄return p1, p1.age-p2.age}return p2, p2.age-p1.age }func main() {var tom person// 赋值初始化tom.name, tom.age Tom, 18// 两个字段都写清楚的初始化bob : person{age:25, name:Bob}// 按照struct定义顺序初始化值paul : person{Paul, 43}tb_Older, tb_diff : Older(tom, bob)tp_Older, tp_diff : Older(tom, paul)bp_Older, bp_diff : Older(bob, paul)fmt.Printf(Of %s and %s, %s is older by %d years\n,tom.name, bob.name, tb_Older.name, tb_diff)fmt.Printf(Of %s and %s, %s is older by %d years\n,tom.name, paul.name, tp_Older.name, tp_diff)fmt.Printf(Of %s and %s, %s is older by %d years\n,bob.name, paul.name, bp_Older.name, bp_diff) }struct的匿名字段 我们上面介绍了如何定义一个struct定义的时候是字段名与其类型一一对应实际上Go支持只提供类型而不写字段名的方式也就是匿名字段也称为嵌入字段。 当匿名字段是一个struct的时候那么这个struct所拥有的全部字段都被隐式地引入了当前定义的这个struct。 让我们来看一个例子让上面说的这些更具体化 package mainimport fmttype Human struct {name stringage intweight int }type Student struct {Human // 匿名字段那么默认Student就包含了Human的所有字段speciality string }func main() {// 我们初始化一个学生mark : Student{Human{Mark, 25, 120}, Computer Science}// 我们访问相应的字段fmt.Println(His name is , mark.name)fmt.Println(His age is , mark.age)fmt.Println(His weight is , mark.weight)fmt.Println(His speciality is , mark.speciality)// 修改对应的备注信息mark.speciality AIfmt.Println(Mark changed his speciality)fmt.Println(His speciality is , mark.speciality)// 修改他的年龄信息fmt.Println(Mark become old)mark.age 46fmt.Println(His age is, mark.age)// 修改他的体重信息fmt.Println(Mark is not an athlet anymore)mark.weight 60fmt.Println(His weight is, mark.weight) }图例如下: 图2.7 struct组合Student组合了Human struct和string基本类型 我们看到Student访问属性age和name的时候就像访问自己所有用的字段一样对匿名字段就是这样能够实现字段的继承。是不是很酷啊还有比这个更酷的呢那就是student还能访问Human这个字段作为字段名。请看下面的代码是不是更酷了。 mark.Human Human{Marcus, 55, 220} mark.Human.age - 1通过匿名访问和修改字段相当的有用但是不仅仅是struct字段哦所有的内置类型和自定义类型都是可以作为匿名字段的。请看下面的例子 package mainimport fmttype Skills []stringtype Human struct {name stringage intweight int }type Student struct {Human // 匿名字段structSkills // 匿名字段自定义的类型string sliceint // 内置类型作为匿名字段speciality string }func main() {// 初始化学生Janejane : Student{Human:Human{Jane, 35, 100}, speciality:Biology}// 现在我们来访问相应的字段fmt.Println(Her name is , jane.name)fmt.Println(Her age is , jane.age)fmt.Println(Her weight is , jane.weight)fmt.Println(Her speciality is , jane.speciality)// 我们来修改他的skill技能字段jane.Skills []string{anatomy}fmt.Println(Her skills are , jane.Skills)fmt.Println(She acquired two new ones )jane.Skills append(jane.Skills, physics, golang)fmt.Println(Her skills now are , jane.Skills)// 修改匿名内置类型字段jane.int 3fmt.Println(Her preferred number is, jane.int) }从上面例子我们看出来struct不仅仅能够将struct作为匿名字段自定义类型、内置类型都可以作为匿名字段而且可以在相应的字段上面进行函数操作如例子中的append。 这里有一个问题如果human里面有一个字段叫做phone而student也有一个字段叫做phone那么该怎么办呢 Go里面很简单的解决了这个问题最外层的优先访问也就是当你通过student.phone访问的时候是访问student里面的字段而不是human里面的字段。 这样就允许我们去重载通过匿名字段继承的一些字段当然如果我们想访问重载后对应匿名类型里面的字段可以通过匿名字段名来访问。请看下面的例子 package mainimport fmttype Human struct {name stringage intphone string // Human类型拥有的字段 }type Employee struct {Human // 匿名字段Humanspeciality stringphone string // 雇员的phone字段 }func main() {Bob : Employee{Human{Bob, 34, 777-444-XXXX}, Designer, 333-222}fmt.Println(Bobs work phone is:, Bob.phone)// 如果我们要访问Human的phone字段fmt.Println(Bobs personal phone is:, Bob.Human.phone) }
http://wiki.neutronadmin.com/news/282734/

相关文章:

  • 超实用网站如何备份网站数据库
  • 打开浏览器的网站网络服务协议
  • 抚州网站开发机构嵌入式软件开发薪资
  • 届毕业设计代做网站软件开发5个过程
  • 网上写作最好的网站贝壳房源网
  • 做安居客网站需要什么浏览器友情链接的形式
  • 网站模板目录扫描我想找个郑州做网站的
  • 骏驰网站开发广州冼村是什么梗
  • 网站建设培训一般多少钱网络规划设计师论文背别人的行么
  • 临沂网站建设昂牛网络phpcms网站系统 技术方案 系统框架图
  • 网站开发工作量评估企业网站模板下载尽在
  • 做网站的软件dwwordpress grace 8.0
  • 装修公司做网站好做吗亳州市建设局网站
  • 网站建设 迅雷下载app定制公司哪家好
  • 维护一个网站要多少钱知乎小说推广对接平台
  • 网站开发建设培训网站太原wangz建设
  • 广州电玩网站开发什么是网络营销和网络营销的职能
  • 个人接单做网站挣钱不企业门户网站用户类型
  • 有没有帮别人做图片的网站赚钱郑州市汉狮做网站
  • app网站建设工作师网站制作和维护费用
  • 企业网站建设如何做好外链建设什么是企业法人
  • 重庆网站建设套餐Saas和wordpress有什么区别
  • 网站开发费用摊销吗网站管理员密码忘记了
  • 网站建设开场白国外建筑设计网站推荐
  • 延安有哪些做网站的公司微信网页制作工具
  • 怎么在网站底部做备案号广州微信小程序开发制作公司
  • 个人网站主页wordpress 外观 自定义 没反应
  • 野马视觉传媒网站建设素锦wordpress
  • 建网站的尺寸山东网站设计公司
  • 网站建设的基本流程图平顶山专业做网站公司