[GO]匿名字段
package main
import (
"fmt"
)
type Person struct {
name string
sex byte
age int
}
type Student struct {
Person //只有名字,没有字段,这里student相当于继承了person的所有字段,就有点像是继承了
id int
addr string
}
func main() {
//来一个顺序初始化
}, , "NJ"}
fmt.Println("s1 = ", s1)
//再来一个自动推导类型
s2 := Student{Person{}, , "NJ"}
fmt.Printf("s2 = %+v\n", s2) //这里是打印出详细的方式
//上面是顺序自动推导,再来一个不一样的
s3 := Student{Person:Person{name: }, id:}
fmt.Printf("s3 = %+v\n", s3)
}
执行的结果
s1 = {{baylor } NJ}
s2 = {Person:{name:baylor sex: age:} id: addr:NJ}
s3 = {Person:{name:baylor sex: age:} id: addr:}
一定要记住的是Person也是一个结构体,那么在通过匿名字段进行初始化的时候一定要指定Person,造成不要写成
s1 := Student{, , "NJ"}
====================华丽的分隔线 ====================
匿名函数成员的操作
package main
import (
"fmt"
)
type Person struct {
name string
sex byte
age int
}
type Student struct {
Person //只有名字,没有字段,这里student相当于继承了person的所有字段,就有点像是继承了
id int
addr string
}
func main() {
}, , "NJ"}
//进行一个取值
fmt.Println("s1.name = ", s1.name)
//进行赋值
s1.name = "mike"
s1.sex = 'm'
s1.age =
s1.id =
s1.addr = "NJ"
fmt.Println("s1 = ", s1)
//进行匿名字段的赋值
s1.Person = Person{}
fmt.Println("s1 = ", s1)
}
执行的结果
s1.name = baylor
s1 = {{mike } NJ}
s1 = {{yoyo } NJ}
[GO]匿名字段的更多相关文章
- 【Go入门教程4】struct类型(struct的匿名字段)
struct Go语言中,也和C或者其他语言一样,我们可以声明新的类型,作为其它类型的属性或字段的容器.例如,我们可以创建一个自定义类型person代表一个人的实体.这个实体拥有属性:姓名和年龄.这样 ...
- go之匿名字段
struct,定义的时候是字段名与其类型一一对应,实际上Go支持只提供类型,而不写字段名的方式,也就是匿名字段,也称为嵌入字段. 当匿名字段是一个struct的时候,那么这个struct所拥有的全部字 ...
- sql having 函数 按匿名字段作为条件进行查询
今天写sql 遇到一个问题 SELECT a.*, count(b.id) AS nums FROM a LEFT JOIN b ON a.id=b.a_id WHERE nums>1 这时候会 ...
- 【Go入门教程6】struct类型(struct的匿名字段)
struct Go语言中,也和C或者其他语言一样,我们可以声明新的类型,作为其它类型的属性或字段的容器.例如,我们可以创建一个自定义类型person代表一个人的实体.这个实体拥有属性:姓名和年龄.这样 ...
- go语言之进阶篇结构体指针类型匿名字段
1.结构体指针类型匿名字段 示例: package main import "fmt" type Person struct { name string //名字 sex byte ...
- go语言之进阶篇非结构体匿名字段
1.非结构体匿名字段 示例 : package main import "fmt" type mystr string //自定义类型,给一个类型改名 type Person st ...
- [GO]非结构体匿名字段
package main import ( "fmt" ) type mystr string //给一个类型重命名 type Person struct { name strin ...
- GO学习笔记:struct的匿名字段
我们上面介绍了如何定义一个struct,定义的时候是字段名与其类型一一对应,实际上Go支持只提供类型,而不写字段名的方式,也就是匿名字段,也称为嵌入字段. 当匿名字段是一个struct的时候,那么这个 ...
- go结构体继承组合和匿名字段
1.结构体方法 go不是纯粹的面向对象的,在go里面函数是一等公民,但是go也有结构体实现类似java一样类的功能来提供抽象.结构体的方法分为值方法和指针方法,前者在方法中做的改变不会改变调用的实例对 ...
随机推荐
- Java-Runoob-高级课程:Java 集合框架
ylbtech-Java-Runoob-高级课程:Java 集合框架 1.返回顶部 1. Java 集合框架 早在 Java 2 中之前,Java 就提供了特设类.比如:Dictionary, Vec ...
- 什么是 MVC ?
本篇博客打算简单介绍一下MVC是什么,为接下来MVC的学习做一下铺垫. MVC是一种架构设计模式,是一种设计理念.是为了达到分层设计的目的,从而使代码解耦,便于维护和代码的复用.MVC是3个单词的缩写 ...
- Entity Framework API介绍 -- DbSet<>().Find()
过去我们常常使用Where或First(FirstOrDefault)方法来查找对应的实体,比如: var query = context.CertInfoMakeDetails.ToList().W ...
- Yaml学习笔录
YAML概要 [YAML](http://yaml.org/)是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写,早先YAML的意 ...
- mac 开启 chrome 和 微信开发者工具 跨域
微信开发者工具:open -n /Applications/wechatwebdevtools.app --args --disable-web-security --user-data-dir=/U ...
- 太白老师day6 1.代码块 2.is==id 3.小数据池
1.代码块: 一个模块一个函数一个类,一个文件都是代码块 在交互模式下, 每一行都是一个代码块 2. is == 内存地址 就是id门牌号 在内存中id是唯一,如果两个变量指向的id相同,那么他们在内 ...
- 解决“在上下文中找不到 owin.Environment 项”
网站发布到虚拟空间后,提示以下错误:在上下文中找不到 owin.Environment 项",百度了好长时间都没有解决.最后在web.config中添加以下配置. <system.we ...
- Thread(线程)三
今天我们继续接着线程讲讲,上一章提到一下task概念, 首先接着task继续往下讲,在前章节提到过Thread怎么实现其他线程完成后再让主线程继续执行的功能,那么如果Task也需要线程等待事件,该怎么 ...
- nginx基本配置与参数说明-【转】
#运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.log; ...
- C语言增量内存申请 realloc
void* realloc (void* ptr, size_t size); Reallocate memory block Changes the size of the memory block ...