美文网首页
Golang结构体struct和method的使用

Golang结构体struct和method的使用

作者: Link_Biao | 来源:发表于2017-10-09 16:34 被阅读0次

golang中是没有class的,但是有一个结构体struct,有点类似,他没有像java,c++中继承的概念,但是他有一个类似功能的结构嵌入

  • 简单的结构体声明和使用
type User struct{
    name string
    age int
    address string
}

user:= User{name:"测试",age:10} 
user.address="广州市"
f.Println(user)
  • 匿名结构体
    person:= struct {//匿名结构
        name string
        age int
    }{name:"匿名",age:1}
    f.Println("person:",person)
  • 函数中结构体作为参数,如果不是用结构指针,函数内参数属性的改变不影响原来对象的属性的改变
//值拷贝,不改变原来的User对象值
func us(user User){ 
    user.name="值拷贝";
    user.age=12
    user.address="珠海市"
    f.Println("user in us:",user)
}

//声明调用
user:=User{}
us(user)
//指针,改变原来的User对象值
func use(user *User){ 
    user.name="指针"
    user.age=15
    user.address="深圳市"
    f.Println("user in use:",*user)
}

//声明调用
user:=User{}
use(&user)
  • go语言中虽然没有继承,但是可以结构内嵌,达到类似继承的效果
type Info struct {
    sex int
    name string
    age int
    address string
}

type User struct{
    like string
    Info
}

type Admin struct {
    unlike string
    Info
}

user:= User{}
user.sex=0
user.address="广州市"
user.like="游戏"
f.Println(user)
    
    
admin:= Admin{Info:Info{sex:1}}//还可以这样声明一些属性值,因为Info是结构体,匿名,所以需要这样声明
admin.address="广州市"
admin.unlike="游戏"
f.Println(admin)

  • 如果嵌入结构的字段和外部结构的字段相同,那么,想要修改嵌入结构的字段值需要加上外部结构中声明的嵌入结构名称
type Info struct {
    sex int
    name string
    age int
    address string
}

type User struct{
    like string
    sex int
    Info
}

user:=User{}
user.sex=1//这里修改的外部结构User里面的sex字段值
user.Info.sex=2//这里修改的是嵌入结构Info的sex字段值

golang中方法,没有重载概念,绑定不同的结构体,即使方法名称相同,也可以编译

type User struct{
    like string
    sex int
    Info
}

type Info struct {
    sex int
    name string
    age int
    address string
}


type Admin struct {
    unlike string
    Info
}


func (user *User) uMethod(age int)User{//方法名uMethod,指针绑定
    user.age=age
    return *user
}


func (admin *Admin) uMethod(age int)Admin{//方法名uMethod,指针绑定
    admin.age=age
    return *admin
}


user:=User{}//调用绑定User的uMethod
user.uMethod(100)
f.Println(user.age)

admin:=Admin{}//调用绑定Admin的uMethod
admin.uMethod(50)
f.Println(admin.age)
  • 在同一个packge中,结构体的字段都是公共的,即使声明的是小写私有的字段

相关文章

  • Golang结构体struct和method的使用

    golang中是没有class的,但是有一个结构体struct,有点类似,他没有像java,c++中继承的概念,但...

  • 【OC梳理】结构体、枚举

    结构体(struct) OC中的结构体(struct),其实就是C语言中的结构体(struct)常见使用方法。OC...

  • 15 Golang结构体详解(一)

    Golang中没有“类”的概念,Golang中的结构体struct和其他语言中的类有点相似。和其他面向对象语言中的...

  • Golang——结构体struct

    Go语言中没有“类”的改变,不支持类的“继承”等面向对象概念。Go语言中通过结构体的内嵌再配合接口比面向对象更具有...

  • Golang struct

    Golang struct 一个结构体(struct)就是一个字段的集合 type Vertex str...

  • golang类和结构体

    golang结构体和类 golang中并没有明确的面向对象的说法,实在要扯上的话,可以将struct比作其它语言中...

  • go结构体(struct)和方法(method)

    结构体(struct) go中没有对象这一概念,所以采用了结构体的概念,结构体在go中有着非常重要的位置。结构体是...

  • Golang笔记: 结构体(struct)

    结构体定义 go语言的关键字 type 可以将各种基本类型定义为自定义类型,包括整型、字符串、布尔等。结构体是一种...

  • Golang 入门 : 结构体(struct)

    Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型。试图表示一个现实世界...

  • 结构 struct golang

    原文链接:结构struct-GOLANG

网友评论

      本文标题:Golang结构体struct和method的使用

      本文链接:https://www.haomeiwen.com/subject/odspyxtx.html