在 go 中,不应在方法内创建新对象却不返回它,这会导致内存浪费和逻辑混乱;推荐使用独立的构造函数(如 newxxx)来初始化并返回结构体指针。
Go 语言强调清晰、高效与显式语义。你提供的代码中,CreateObject() 方法在接收者 *SelfInitialisator 的上下文中新建了一个 SelfInitialisator 实例,但既未返回该实例,也未将其赋值给任何外部变量——这意味着该对象在方法作用域结束时即被垃圾回收,完全无实际用途,属于典型的“创建即丢弃”反模式。
✅ 正确做法:使用命名构造函数(Factory Function),例如 NewSelfInitialisator():
func NewSelfInitialisator() *SelfInitialisator {
s := new(SelfInitialisator)
s.Fields1 = "Hello"
s.Fields2 = "Foo"
return s
}调用方式简洁明确:
s := NewSelfInitialisator() s.Method1() // 输出: Hello Foo
? 补充建议:
func NewSelfInitialisator(f1, f2 string) *SelfInitialisator {
return &SelfInitialisator{Fields1: f1, Fields2: f2}
}
——除非是内部缓存、日志临时对象等有明确生命周期管理的场景。总结:Go 不支持传统意义上的“构造方法”,而是通过普通函数实现对象创建。将初始化逻辑集中于 NewXXX 函数,既符合语言哲学,也提升代码可读性、可测试性与复用性。
# go
# 作用域
# 代码可读性
# 构造函数
# 结构体
# 指针
# function
# 对象
# 推荐使用
# 将其
# 自定义
# 不支持
# 可选
# 应在
# 这会
# 也未
# 结束时
# 或不
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
如何在Golang中处理云原生事件_使用Event和Notification机制
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
Python文件管理规范_工程实践说明【指导】
Win11开始菜单打不开_修复Windows 11点击开始图标无响应【教程】
Win11蓝牙开关不见了怎么办_Win11蓝牙驱动丢失修复教程【方法】
如何使用Golang实现容器健康检查_监控和自动重启
Golang如何遍历目录文件_Golang filepath.Walk目录遍历操作方法
Win11怎么查看已连接wifi密码 Win11查已连wifi密码步骤【教程】
如何在JavaScript中动态拼接PHP的base_url与jQuery变量
php串口通信波特率怎么选_根据硬件手册设置正确波特率【方法】
如何使用Golang构建基础消息队列模拟_Golang消息发送与消费实现方法
Win10系统怎么查看网络连接状态_Windows10网络和共享中心
Win11怎么更改鼠标指针方案_Windows11自定义鼠标光标样式与大小
PythonWeb前后端整合项目教程_FastAPIReact完整实例
如何使用Golang管理模块版本_Golanggo mod tidy与升级方法
Win11时间怎么同步到原子钟 Win11高精度时间同步设置【指南】
Win11怎么关闭右下角弹窗_Win11拦截系统通知广告【设置】
Windows怎样关闭开始菜单推荐广告_Windows关闭开始菜单推荐设置【步骤】
如何在 Go 中调用动态链接库(.so)中的函数
c++怎么操作redis数据库_c++ hiredis库连接与命令执行【实战】
Python 模块的 __name__ 属性如何由导入方式决定?
Laravel 查询 JSON 列:高效筛选包含数组中任意值的记录
Win11怎么关闭防火墙通知_屏蔽Win11安全中心安全警告弹窗【技巧】
C#如何使用XPathNavigator高效查询XML
如何使用Golang操作指针变量_Golang解引用与赋值实践
Windows10如何重置此电脑_Windows10电脑重置方法【步骤】
c++如何用AFL++进行模糊测试 c++ Fuzzing入门【安全】
Win11如何暂停系统更新 Win11暂停更新最长时限设置【步骤】
如何使用Golang实现聊天室消息存档_存储聊天记录到文件
Ajax提交表单PHP怎么接收_处理Ajax发送的表单数据技巧【指南】
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
Win11声音太小怎么办_Windows 11开启响度均衡增强音量【技巧】
静态属性修改会影响所有实例吗_php作用域操作符下静态存储【教程】
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
如何使用Golang搭建Web开发环境_快速启动HTTP服务
php中常量能用::访问吗_类常量与作用域操作符使用场景【汇总】
Win11怎么关闭搜索历史_Win11清除设备上的搜索历史记录
C#如何序列化对象为XML XmlSerializer用法
Python网络日志追踪_请求定位解析【教程】
如何在Golang中捕获HTTP服务器错误_GolangHTTP Handler中error处理
如何使用Golang实现负载均衡_分发请求到多个服务节点
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
php8.4如何调用com组件_php8.4windows下com操作指南【教程】
Python变量绑定机制_引用模型解析【教程】
Win11怎么关闭搜索历史 Win11清除搜索框最近记录【隐私】
如何在Windows中创建新的用户账户?(标准与管理员)
Windows10电脑怎么设置文件权限_Win10安全选项卡所有者修改
VSC怎样在Linux运行PHP_Ubuntu系统配置步骤【操作】
Golang如何测试HTTP中间件_Golang HTTP中间件功能测试实践
2026-01-05
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。