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

网站代码大全可复制网站排名提高

网站代码大全可复制,网站排名提高,中国建设银行官网站查询卡号,朋友让帮忙做网站结构体 结构体定义 在之前学过的数据类型中,数组与切片,只能存储同一类型的变量。若要存储多个类型的变量,就需要用到结构体,它是将多个任意类型的变量组合在一起的聚合数据类型。 每个变量都成为该结构体的成员变量。   可以理…

结构体

结构体定义

  在之前学过的数据类型中,数组与切片,只能存储同一类型的变量。若要存储多个类型的变量,就需要用到结构体,它是将多个任意类型的变量组合在一起的聚合数据类型。 每个变量都成为该结构体的成员变量。
  可以理解为 Go语言 的结构体struct和其他语言的class有相等的地位,但是Go语言放弃大量面向对象的特性,所有的Go语言类型除了指针类型外,都可以有自己的方法,提高了可扩展性。在 Go 语言中没有没有 class 类的概念,只有 struct 结构体的概念,因此也没有继承。
结构体的声明:

type 结构体名 struct {属性名   属性类型属性名   属性类型
}

eg:

type Student struct{name stringage intgender stringdeskmate *Studentroomate *Student
}

注意事项

  1. 最后一个字段和右括号不在同一行时,要加引号,在同一行时,不加引号
//正确写法zhangsan := Student{name:"小明",age:18,gender: "male",}/* 或者zhangsan := Student{name:"小明",age:18,gender: "male"}*//* 错误写法zhangsan := Student{name:"小明",age:18,gender: "male"}*/
  1. 字段名初始化时要么全写,要去全不写,不能有的写,有的不写
/* 指定字段名的初始化正确形式zhangsan := Student{name:"小明",age:18,gender: "male",} *///未指定字段名的初始化正确形式zhangsan := Student{"小明",18,"male",nil,nil,}
  1. 初始化结构体,并不一定所有字段都赋值,未被赋值的字段,会自动赋值为其类型的零字段。
    但是只有通过指定字段名,才可进行部分赋值,不指定字段名会报错。
    eg:错误的写法
zhangsan := Student{"小明",18,"male",}

绑定方法

Golang中,我们无法在结构体内定义方法,需要使用组合函数的方式来定义结构体方法。
eg:


type Student struct{name stringage intgender stringdeskmate *Studentroomate *Student
}//定义和结构体有关的方法
func (stu Student) StudentPrint(){fmt.Printf("名字:%s\n",stu.name)fmt.Printf("年龄:%d\n",stu.age)fmt.Printf("性别:%s\n",stu.gender)
}
func main() {zhangsan := Student{"小明",18,"male",nil,nil,}/*名字:小明年龄:18性别:male */zhangsan.StudentPrint()
}

方法的参数传递方式

那我们如何进行选择呢?以下几种情况,应当直接使用指针做为方法的接收者。

  1. 你需要在方法内部改变结构体内容的时候

  2. 出于性能的问题,当结构体过大的时候 (因为指针大小相对于传值调用方式要求将参数的一份拷贝传递给函数花费的开销较小。)

  有些情况下,以值或指针做为接收者都可以,但是考虑到代码一致性,建议都使用指针做为接收者。

不管你使用哪种方法定义方法,指针实例对象、值实例对象都可以直接调用,而没有什么约束。这一点Go语言做得非常好。

当想在方法内改变实例的属性的时候,必须使用指针作为方法的接收者

func (stu *Student) changeage(){stu.age += 1
}

结构体的嵌套

  由于Golang中无继承的实现,所以结构体的嵌套可以代替实现继承。
使用方法:将嵌套的结构体作为一个匿名字段


type Student struct{name stringage intgender stringdeskmate *Studentroomate *Student//匿名字段school
}
type school struct{schoolarea stringschoolmj string
}
func main() {new_un := school{"东南大学","10000",}zhangsan := Student{"小明",18,"male",nil,nil,new_un,}fmt.Println(zhangsan.school)
}

方法权限

在 Go 语言中,函数名的首字母大小写非常重要,它被来实现控制对方法的访问权限。

  • 当方法的首字母为大写时,这个方法对于所有包都是Public,其他包可以随意调用

  • 当方法的首字母为小写时,这个方法是Private,其他包是无法访问的。

结构体初始化


func main() {//1.直接赋值实例化zhangsan := Student{"小明",18,"male",nil,nil,}//2.使用new实例化ls := new(Student)ls.name = "lisi"//3.使用var实例化var ww Student;ww.name = "王五"fmt.Println(zhangsan.name)fmt.Println(ls.name)fmt.Println(ww.name)/* 小明lisi王五 */
}

结构体的构造函数

Golang语言的结构体没有构造函数,我们可以自己实现。 例如,下方的代码就实现了一个person的构造函数。 因为struct是值类型,如果结构体比较复杂的话,值拷贝性能开销会比较大,所以该构造函数返回的是结构体指针类型。


func gz(name string,age int, gender string) *Student{return &Student{name: name,age: age,gender: gender,}
}func main() {zhangsan := gz("zahngsan",19,"男")
}
http://www.yidumall.com/news/94232.html

相关文章:

  • 南京市雨花区建设局网站公众号排名优化软件
  • 三网合一网站建设报价企业做推广有几种方式
  • wordpress 网站模板百度推广登录平台网址
  • 用什么软件可以做网站智能识别图片
  • wordpress关键词广州软件系统开发seo推广
  • 官方网站开发哪家便宜百度收录链接提交入口
  • 哈尔滨做网站的公司培训网站源码
  • 平台网站开发风险如何做一个自己的网页
  • 云服务器里面做网站播放器网络营销比较好的企业
  • 个人做的网站百度搜索不到网站备案
  • 找人做网站被骗了属于诈骗吗营销型网站
  • wordpress最热门免费主题快速优化seo
  • 个人房产网签查询系统手机优化什么意思
  • 可以做外链视频的网站湖南靠谱关键词优化
  • 如何做好网站关键词布局杭州优化外包
  • 深圳住房和建设局网站预约放号百度注册入口
  • 网站到期域名怎么解决办法怎么自己做一个网站
  • 南阳网站建站公司百度统计怎么使用
  • 萝岗网站建设优化百度关键词优化公司哪家好
  • 视频涉台互联网网站怎么做如何在百度发布信息推广
  • 网站注销怎么做消注册公司网站
  • 杭州市钱江新城投资集团有限公司征集网站建设合作单位的公告怎么查搜索关键词排名
  • 上海闵行区网站制作公司推广平台有哪些?
  • 怎样学好动漫制作专业长沙seo优化
  • 中国建设承包商网站正规百度推广
  • 做网站信科网站建设海南seo快速排名优化多少钱
  • 食品网站建设策划方案seo页面优化公司
  • 建立自己的网站需要服务器吗杭州seo公司服务
  • 基于安卓系统的app开发百度seo招聘
  • aspx网站架设搜索引擎优化是什么意思啊