栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

go语言中的结构体与方法详解

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go语言中的结构体与方法详解

结构体用来定义复杂的数据结构,存储很多相同的字段属性

1、结构体的定义以及简单实用

package mainimport (    "fmt")func main() {    type Student struct { //定义结构体        name string        age  int    }    s1 := new(Student) // 定义指向结构体的指针    s1.name = "xiaomu"    s1.age = 10    fmt.Printf("name:%snage:%dn", s1.name, s1.age)}

结构体定义的三种方式,例如上面的Student类型,有如下方式定义

①var s1 Student 在内存中直接定义一个结构体变量

②s1 := new(Student) 在内存中定义一个指向结构体的指针

③s1 := &Student{} 同上

通过以下方式获取存储的值

①s1.name

②s1.name或者(*s1).name

③同上

2、struct中的“构造函数”,称之为工厂模式,见代码

package mainimport (    "fmt")type Student struct { //声明结构体    Name string    Age  int}func NewStudent(name string, age int) *Student { // 返回值指向Student结构体的指针    return &Student{        Name: name,        Age:  age,    }}func main() {    s1 := NewStudent("xiaomu", 123) // 声明并且赋值指向Student结构体的指针    fmt.Printf("name: %snage: %d", s1.Name, s1.Age)}

3、特意声明注意事项!!!

结构体是值类型,需要使用new分配内存

4、匿名字段,直接看下面代码

package mainimport (    "fmt")func main() {    type Class struct {        ClassName string    }    type Student struct { //定义结构体        name  string        age   int        Class // 定义匿名字段,继承了该结构体的所有字段    }    s1 := new(Student) // 定义指向结构体的指针    s1.ClassName = "xiaomu"    fmt.Printf("ClassName:%sn", s1.ClassName)}

struct的方法

1、在struct中定义方法并且使用

package mainimport (    "fmt")type Student struct { //定义结构体    name string    age  int}func (stu *Student) OutName() { // 定义Student方法    fmt.Println(stu.name)}func main() {    s1 := new(Student) // 定义指向结构体的指针    s1.name = "xaiomu"    s1.OutName()}

2、结构体继承结构体,其中被继承结构体的方法全部为继承结构体吸收

package mainimport (    "fmt")type ClassName struct {    className string}func (cla *ClassName) OutClassName() {    fmt.Println(cla.className)}type Student struct { //定义结构体    name      string    age       int    ClassName // 继承ClassName结构体的所有}func (stu *Student) OutName() { // 定义Student方法    fmt.Println(stu.name)}func main() {    s1 := new(Student) // 定义指向结构体的指针    s1.className = "xiaomu"    s1.OutClassName()}

更多相关知识请关注go语言教程栏目

以上就是go语言中的结构体与方法详解的详细内容,更多请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/793999.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号