go中的"继承"之struct的匿名字段2(代码片段)

author author     2023-01-05     741

关键词:

// code_016_struct_anonymous_field2 project main.go
package main

import (
    "fmt"
)

type Person struct 
    name string
    sex  byte
    age  int


type Student struct 
    Person
    id   int
    addr string
    name string //同名字段


type mystr string //自定义类型

type Student01 struct 
    Person
    int
    mystr


type Person02 struct 
    name string
    sex  byte
    age  int


type Student02 struct 
    *Person02 //匿名字段,结构体指针
    id        int
    addr      string


func main() 
    //1)同名字段的使用
    var s Student
    s.name = "ck_god" //默认给最外层的成员赋值
    fmt.Printf("%+v
", s)

    s.Person.name = "god_girl" //显示调用
    fmt.Printf("%+v
", s)

    //2) 其他匿名字段
    s1 := Student01Person"ck_god", 1, 18, 1, "wz"
    fmt.Printf("%+v
", s1)

    //非结构体类型的匿名成员的操作
    fmt.Printf("%s,%c,%d,%d,%s
",
        s1.name, s1.sex, s1.age, s1.int, s1.mystr)

    //3)结构体指针类型
    s3 := Student02&Person02"ck_god", 0, 18, 1, "bj"
    fmt.Printf("%+v
", s3)
    fmt.Printf("%s,%c,%d
", s3.name, s3.sex, s3.age)

    var s2 Student02
    s2.Person02 = new(Person02) //分配空间
    s2.name = "ck"
    s2.sex = 1
    s2.age = 20

    s2.id = 2
    s2.addr = "sz"

    fmt.Println(s2.name, s2.sex, s2.age, s2.id, s2.age)

输出结果如下:

Person:name: sex:0 age:0 id:0 addr: name:ck_god
Person:name:god_girl sex:0 age:0 id:0 addr: name:ck_god
Person:name:ck_god sex:1 age:18 int:1 mystr:wz
ck_god,,18,1,wz
Person02:0xc000004480 id:1 addr:bj
ck_god,,18
ck 1 20 2  20

go中的"类"之struct的初体验(代码片段)

//其他的包。。。。。。。。。。。。。。。。。//teacher01只能在本文件引用,英文首字母小写typeteacher01structIdintNamestringCoursestringSexstring//Teacher02可以在任意文件引用,英文首字母大写typeTeacher02structIDintNamestringCoursestringsexstring//... 查看详情

go继承(代码片段)

go中没有继承,只能通过组合来实现继承。继承和组合区别继承就是子类继承了父类的特征和行为,使得子类实例具有父类的行为和方法,属于is-a的范畴。组合就是通过对现有对象的拼装从而获得实现更为复杂的行为的方法。一... 查看详情

go语言之structtag

在上一篇介绍Go反射的时候,提到了如何通过反射获取Struct的Tag,这一篇文章主要就是介绍这个的使用和原理,在介绍之前我们先看一下JSON字符串和Struct类型相互转换的例子。JSON字符串对象转换funcmain(){  varuUser  h... 查看详情

go之包引用、"实体类"的使用套路(struct)

参考技术A首先我们看下包下面看下go里面包的创建和使用接下来复制这个目录地址到goland的ide里面直接open这个路径地址否则会执行失败可以发现同包下面的文件里面的方法可以直接相互调用不用引入包但是我们想要在main函数里... 查看详情

go中的struct之方法method初体验(代码片段)

//code_017_struct_method_usageprojectmain.gopackagemainimport("fmt")typeMyIntintfunc(aMyInt)Add(bMyInt)MyIntreturna+bfuncAdd(a,bMyInt)MyIntreturna+btypePersonstructnamestringsexbyteageintfunc(pP 查看详情

go语言之go语言网络编程(代码片段)

...如下:net参数是"tcp4"、"tcp6"、"tcp"中的任意一个,分别表示TCP(IPv4-only),TCP(IPv6-only)或者TCP(IPv4,IPv6)中的任意一个;addr表示域名或者IP地址,例如"c.biancheng.net:80"或者"127.0.0.1:22"。TCPse 查看详情

go使用结构体时需要import吗

...张三"age:=18sex:=1address:="大铁岭"Go里面有一个叫struct的结构体可以把多种不同类型的变量联合起来struct类型struct是一个由不同类型的值构成的结构体.它的定义如下struct//关键字field1string//前端是变量名后面是变量类型fiel... 查看详情

go语言之struct结构体(代码片段)

struct结构Go中的struct与C语言中的struct非常相似,并且Go没有class使用type<Name>struct定义结构,名称遵循可见性规则支持指向自身的指针类型成员支持匿名结构,可用作成员或定义成员变量匿名结构也可以用于map的值可以使用字... 查看详情

go的结构体(代码片段)

...义结构体的名称,在同一个包内不能重复字段名:结构体中的字段名必须惟一字段类型:表示结构体字段的具体类型例子一typepersionstructnamestringcitystringageint8结构体实例化只有当结构体实例化时,才会真正地分配内存。也就是必... 查看详情

golang之结构体(代码片段)

...。例如,下方的代码就实现了一个person的构造函数。因为struct是值类型,如果结构体比较复杂的话,值拷贝性能开销会比较大,所以该构造函数返回的是结构体指针类型。typepersonstruct namestring citystring ageint8funcnewPerson(name,citystring... 查看详情

python读取mat(v7.3)文件中的cell以及struct

...at文件的读取(matlab-v7.3格式)主要分为3个部分:1常规mat中的变量        2mat文件中的cell内部数据读取        3mat文件中的struct数据读取@author:ZXY"""""&quo... 查看详情

go语言框架gin之集成swagger

...多个标签//@Tags标签//@Produce json//@Paramnamequerystringfalse"标签名称"maxlength(100)//@Paramstatequeryintfalse"状态"Enums(0,1)default(1)//@Parampagequeryintfalse"页码"//@Parampage_sizequeryintfalse"每页数量"//@Success200objectmodel.Tag... 查看详情

go语言基础之指针(代码片段)

1指针1.1Go语言中指针介绍指针是程序载入到内存中的所对应的地址,为了保存数据在内存中对应的地址,就有了指针变量。指针在内存中的示意图如下:Go语言中的指针不能进行偏移和运算,是安全指针。在Golang中只有&(取... 查看详情

go之初探--channel(代码片段)

...例子,豁然开朗。让我们看一下这个例子packagemainimport( "fmt" //"time")funcmain() gofunc() fmt.Println("1") () fmt.Println("2") fmt.Println("3") time.Sleep(1*time.Second)因为主协程不会等待子协程执行结束,而是立... 查看详情

go:面向"对象"

...一个首字母大写的方法,由于获取结构体属性的值。二、继承在golang中,如果一个结构体嵌套了另一个匿名结构体,那么这个结构体可以直接访问匿名结构体的字段和方法,从而实现了继承。typeAnimalstruct Namestring AgeinttypeTa 查看详情

golang:go-querystring将struct编码为url查询参数的库(代码片段)

go-querystringisaGolibraryforencodingstructsintoURLqueryparameters.文档https://pkg.go.dev/github.com/google/go-querystring安装gogetgithub.com/google/go-querystring示例packagemainimport("fmt"" 查看详情

go语言json处理

...一种经常使用的数据格式,下面总结一下json的使用json与struct转换的话struct的属性必须首字母大写。当用的多了就会发现一个致命的问题:go默认会将特殊字符转义采用以下方法可以解决:处理方法1处理方法2不管是属性组成的还... 查看详情

";" 和有啥不一样和 T-SQL 中的“GO”?

】";"和有啥不一样和T-SQL中的“GO”?【英文标题】:Whatisthedifferencebetween";"and"GO"inT-SQL?";"和有什么不一样和T-SQL中的“GO”?【发布时间】:2009-10-0422:14:45【问题描述】:我使用ADO.NET和sqlcmd实用程序... 查看详情