package main;

import "fmt"

//结构struct

//定义Person结构
type Person struct {
name string;
age int;
}; //结构里面还有一个匿名结构
type Person2 struct {
name string;
age int;
contact struct {
phone string;
addr string;
}
} //结构里的匿名字段
type Person3 struct {
string;
int;
} //嵌入结构,组合
type Person4 struct {
Person;
phone string;
addr string;
} func main() {
a := Person{};
a.name = "test";
a.age = 27;
fmt.Println(a); //简单初始化方式
b := Person{
name: "test2",
age: 24,
};
fmt.Println(b); //调用函数A,这里是传递的值拷贝
A(b);
fmt.Println(b); //调用函数B,这里传递的是地址
B(&b);
fmt.Println(b); //对结构初始化的时候,一般直接用取地址符号
c := &Person{
name: "test3",
age: 25,
};
//在调用函数时,就不需要写取地址&符号
B(c);
fmt.Println(c); //匿名结构
d := struct {
name string;
age int;
}{
name: "test4",
age: 22,
};
fmt.Println(d);
e := Person2{
name: "test5",
age: 33,
}; //匿名结构的初始化
e.contact.phone = "1388888888";
e.contact.addr = "地址";
fmt.Println(e); //注意字段的顺序
f := Person3{
"test6",
55,
};
fmt.Println(f); //两个结构间的比较
g := f;
fmt.Println(g == f); //嵌入结构的初始化
h := Person4{
Person: Person{name: "test7", age: 66},
phone: "139999999",
addr: "地址2",
};
fmt.Println(h);
h.Person.name = "哈哈";
h.Person.age = 99;
fmt.Println(h);
//可以对name和age直接操作
h.name = "haohao";
h.age = 88;
fmt.Println(h);
} func A(p Person) {
p.age = 33;
fmt.Println(p);
} func B(p *Person) {
p.age = 33;
fmt.Println(p);
}

  

go语言中结构struct的更多相关文章

  1. C语言中结构体赋值问题的讨论

    今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...

  2. C语言中结构体对齐问题

    C语言中结构体对齐问题 收藏 关于C语言中的结构体对齐问题 1,比如: struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B; ...

  3. C语言中结构体赋值问题的讨论(转载)

    今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...

  4. Go语言中结构体的使用-第2部分OOP

    1 概述 结构体的基本语法请参见:Go语言中结构体的使用-第1部分结构体.结构体除了是一个复合数据之外,还用来做面向对象编程.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. ...

  5. 6. Go 语言中结构体的使用

    1. 结构体的定义格式 在go语言中结果的定义格式如下: 123 type structName struct { filedList} 列子如下: 1234 type Person struct { ...

  6. C语言中结构体内存存储方式

    C语言中结构体内存存储方式 结构体的默认存储方式采用以最大字节元素字节数对其方式进行对齐,例如一个结构体中定义有char.int类型元素,则结构体存储空间按照int类型占用字节,如果还有double类 ...

  7. Go语言中结构体的使用-第1部分结构体

    1 概述 结构体是由成员构成的复合类型.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性.结构体成员,也可称之为成员变量,字段,属性.属性要满足唯一性.结构体的概念在软件工程上 ...

  8. c语言中结构体指针

    1.指向结构体的指针变量: C 语言中->是一个总体,它是用于指向结构体,如果我们在程序中定义了一个结构体,然后声明一个指针变量指向这个结构体.那么我们要用指针取出结构体中的数据.就要用到指向运 ...

  9. C语言中结构体(struct)的几种初始化方法

    转自https://www.jb51.net/article/91456.htm     本文给大家总结的struct数据有3种初始化方法 1.顺序 2.C风格的乱序 3.C++风格的乱序 下面通过示 ...

随机推荐

  1. 解决linux中ssh登录Warning:Permanently added (RSA) to the list of known hosts

    原因: 在执行scp id_rsa.pub root@hostname:/root/.ssh这一步时,没在本机的/root/.ssh下生成known_hosts文件. 解决方案: vi /etc/ss ...

  2. 讲一讲Servlet的生命周期

    1 实例化    servlet 容器创建servlet的实例; 2初始化   该容器调用init()方法;   每个实例,init()方法只被调用一次 3 服务    如果请求Servlet,则容器 ...

  3. JDBC有哪些接口

    1 实现Driver接口的对象是JDBC进行数据库访问的开始,可以通过java.lang.Class类的forName(),动态加载驱动程序. Class.forName("驱动程序&quo ...

  4. The iOS 7 Design Cheat Sheet

    http://ivomynttinen.com/blog/the-ios-7-design-cheat-sheet/

  5. QuickSand图片点击后分裂成几份消失效果《IT蓝豹》

    QuickSand图片点击后分裂成几份消失效果 QuickSand图片点击后分裂成几份消失效果,适合做图片退出和剪切效果.同时也可以学习android动画. demo中都封装好几个功能类,主要动画实现 ...

  6. 配置linux的ip、网络等

      之前配过ubuntu的..以为centos的也是这么配置,结果照抄下来,启动报错哈哈...网上搜下资料发现centos配置需要不少文件.忘了以后再参考下- ubuntu的,这样配置 vim /et ...

  7. java-学习6

    public class arryTest4 { //对整型数组按照由小到大的顺序进行排序 public static void main(String[] args) { int score[]= ...

  8. sass 的安装 编译 使用

    1.使用node 的command 运行命令: gem install sass2.cmd检查是否安装成功 sass -v 如果成功了 可以看见版本信息Sass 3.5.5 ...3. 创建.scss ...

  9. JVM—JVM内存模型

    我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等 ...

  10. 1.1、CDH 搭建Hadoop在安装之前(配置网络名称)

    重要: CDH需要IPv4.不支持IPv6.提示:粘合时,请使用bond0 IP地址,因为它代表所有聚合链接. 按如下方式配置群集中的每个主机,以确保所有成员可以相互通信: 将主机名设置为唯一名称(不 ...