go 面向对象编程
通过结构体可以定义一个组合字面量,有几个细节,也算是规则
规则一:当最后一个字段和结果不在同一行时,, 不可省略。
xm := Profile{
name: "小明",
age: 18,
gender: "male",
}
反之,在同一行,就可以省略。
xm := Profile{
name: "小明",
age: 18,
gender: "male"}
规则二:字段名要全写,要么全不写,不能有的写,有的不写。
例如下面这种写法是会报 mixture of field:value and value initializers 错误的
xm := Profile{
name: "小明",
18,
"male",
}
规则三:初始化结构体,并不一定要所有字段都赋值,未被赋值的字段,会自动赋值为其类型的零值。
2. 绑定方法
在 Go 语言中,我们无法在结构体内定义方法,那如何给一个结构体定义方法呢,答案是可以使用组合函数的方式来定义结构体方法。它和普通函数的定义方式有些不一样,比如下面这个方法
func (person Profile) FmtProfile() {
fmt.Printf("名字:%s\n", person.name)
fmt.Printf("年龄:%d\n", person.age)
fmt.Printf("性别:%s\n", person.gender)
}
其中FmtProfile 是方法名,而(person Profile) :表示将 FmtProfile 方法与 Profile 的实例绑定。我们把 Profile 称为方法的接收者,而 person 表示实例本身,它相当于 Python 中的 self,在方法内可以使用 person.属性名 的方法来访问实例属性。
方法的参数传递方式
当你想要在方法内改变实例的属性的时候,必须使用指针做为方法的接收者。
两种定义方法的方式:
-
以值做为方法接收者
-
以指针做为方法接收者
那我们如何进行选择呢?以下几种情况,应当直接使用指针做为方法的接收者。
你需要在方法内部改变结构体内容的时候
出于性能的问题,当结构体过大的时候
- 有些情况下,以值或指针做为接收者都可以,但是考虑到代码一致性,建议都使用指针做为接收者。
http代理服务器(3-4-7层代理)-网络事件库公共组件、内核kernel驱动 摄像头驱动 tcpip网络协议栈、netfilter、bridge 好像看过!!!!
但行好事 莫问前程
--身高体重180的胖子
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
2022-03-16 clock_gettime gettimeofday time_t tm
2021-03-16 系统架构宏 arm or x86_64 or ?