https://cloud.tencent.com/developer/article/1482382

4.1.结构体

结构体:讲一个或多个变量组合到一起形成新的类型,这个类型就是结构体,结构体是值类型

定义结构体和赋值

//Learn_Go/main.go
package main import "fmt" type People struct {
Name string
Age int
} func main() {
var peo People
fmt.Println(peo) //{ 0}
fmt.Printf("%p",&peo) //0x110040f0 //赋值
//第一种
peo = People{"derek",20}
fmt.Println(peo) //{derek 20}
//第二种
peo2 := People{Age:12,Name:"jack"}
fmt.Println(peo2) //{jack 12} //第三种
peo.Name = "alice"
peo.Age = 25
fmt.Println(peo) //{alice 25}
}

4.2.结构体指针

由于结构体是值类型,在方法传递时希望传递结构体地址,可以使用结构体指针完成

可以结合new()函数创建结构体指针

//Learn_Go/main.go
package main import "fmt" type People struct {
Name string
Age int
} func main() {
peo := new(People)
fmt.Println(peo) //&{ 0}
fmt.Println(peo == nil) //false peo.Name = "derek"
peo.Age = 22
fmt.Println(peo) //&{derek 22} peo2 := peo
fmt.Println(peo2) //&{derek 22} peo2.Name = "Jack"
fmt.Println(peo, peo2) //&{Jack 22} &{Jack 22}
}

4.3.方法

方法和函数语法比较像,区别是函数属于包,通过包调用函数,而方法属于结构体,通过结构体变量调用

默认是函数,隶属于包,所以需要添加标识,告诉编译器这个方法属于哪个结构体 

(1)创建方法

//Learn_Go/main.go
package main import "fmt" type People struct {
Name string
Weight int
} func (p People) run() {
fmt.Println(p.Name,"正在跑步,当前体重为:",p.Weight)
} func main() {
peo := People{"derek",120}
peo.run() //derek 正在跑步,当前体重为: 120
}

(2)修改值,用指针

//Learn_Go/main.go
package main import "fmt" type People struct {
Name string
Weight int
} func (p *People) run() {
fmt.Println(p.Name,"正在跑步,当前体重为:",p.Weight)
//运行一次run方法,体重减去1
p.Weight -= 1
} func main() {
peo := People{"derek",120}
peo.run() //derek 正在跑步,当前体重为: 120
fmt.Println("跑完步后的体重为:",peo.Weight) //跑完步后的体重为: 119
}

Go-结构体,结构体指针和方法的更多相关文章

  1. 4.Go-结构体、结构体指针和方法

    4.1.结构体 结构体:将一个或多个变量组合到一起形成新的类型,这个类型就是结构体,结构体是值类型 定义结构体和赋值 //Learn_Go/main.go package main import &q ...

  2. C语言结构体(struct)使用方法

    基本定义:结构体,通俗讲就像是打包封装,把一些变量有共同特征(比如同属于某一类事物的属性)的变量封装在内部,通过一定方法访问修改内部变量. 结构体定义: 第一种:只有结构体定义 struct stuf ...

  3. C语言结构体定义的几种方法

    什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据 ...

  4. file结构体中private_data指针的疑惑

    转:http://www.360doc.com/content/12/0506/19/1299815_209093142.shtml hi all and barry, 最近在学习字符设备驱动,不太明 ...

  5. C语言 指向结构体变量的指针

    一个指向变量的指针表示的是占内存中起始位置 一个指向结构体的变量的指针表示的是这个结构体变量占内存中的起始位置,同样它也可以指向结构体变量数组 定义结构体变量的指针: //假设已有一个结构体名为Stu ...

  6. file结构体中private_data指针的疑惑【转】

    本文转载自:http://www.cnblogs.com/pengdonglin137/p/3328984.html hi all and barry, 最近在学习字符设备驱动,不太明白private ...

  7. C/C++中指向结构体变量的指针,调用指向的那个结构体中的成员

    设p是指向结构体变量的指针,则可以通过以下的方式,调用指向的那个结构体中的成员: (1)结构体变量.成员名.如,stu.num. (2)(*p).成员名.如,(*p).num. (3)p->成员 ...

  8. vector存放结构体数据的2种方法

    如果要在Vector容器中存放结构体类型的变量,经常见到两种存放方式. 方式一:放入这个结构体类型变量的副本. 方式二:放入指向这个结构体类型变量的指针. 假设结构体类型变量是这样的, typedef ...

  9. C++-Typedef结构体遇上指针

    继Typedef遇上结构体数组后,我们又产生了新的疑问. 上一期地址:https://www.cnblogs.com/lemaden/p/10122929.html 昨天一位朋友又问我了,说结构体数组 ...

随机推荐

  1. R语言入门:向量索引

    这节的内容是建立在之前我们对R语言最基本向量赋值的基础之上的,笔者本人学完R当中向量的索引感觉异常舒适,因为这个比Python的索引爽多了,是什么值开始索引就从哪里开始索引,到哪里结束就在哪里结束,而 ...

  2. iOS 开发技术栈与进阶

    最近有一些开发朋友问我应该怎样提升自己的能力,回想起来做了这么久 iOS 开发,我也有过那种“让我做一个功能实现个需求我会做,但接下来怎样提高我不知道.”的时期,这里尝试列一下 iOS 开发的相关技术 ...

  3. Centos7内核版安装nginx环境问题及解决方法

    错误信息:./configure: error: C compiler cc is not found解决方案:yum -y install gcc gcc-c++ autoconf automake ...

  4. 小白的linux学习笔记10:安装nginx和第一个网页

    sudo yum install nginx sudo systemctl status nginx sudo systemctl start nginx 检查端口:netstat -tlpn sud ...

  5. 8maven配置多个项目之间的依赖

    首先创建两个项目进行测试依赖 创建一个HelloWorld2项目,一个HelloWorld类里面有一个sayHello的方法 然后再创建一个HelloWorldTime项目,一个SayHelloWor ...

  6. MySQL架构和MySQL索引

    1.  MySQL架构 1.1         逻辑架构图 1.1.1   Connection Pool: 连接池 * 管理缓冲用户连接,线程处理等需要缓存的需求. * 负责监听对 MySQL Se ...

  7. 9款最好用的MySQL数据库客户端图形界面管理工具,第三款我用了10年

    MySQL的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,这里我介绍几个经常使用的MySQL图形化管理工具,供大家参考. MySQL是一个非常流行的小型关系型数据 ...

  8. 一个抓猫的游戏 消遣GAME 持续更新中!

    一个抓猫的游戏 版本 Catch_Cat_V0.30 https://files-cdn.cnblogs.com/files/send-off-a-friend/Catch_Cat_V0.3.rar ...

  9. c#---out参数

    一个方法有多个返回值时,返回值类型相同可以返回一个数组 static void Main(string[] args) { , , , , , , , , , }; int[] result = Ge ...

  10. Wannafly Winter Camp 2020 Day 7D 方阵的行列式 - 数学

    于是去弄了个板子来 #include <bits/stdc++.h> using namespace std; #define int long long const int mod = ...