如何在 Go 中使用 var 关键字声明并初始化多个返回值的变量
技术百科
花韻仙語
发布时间:2026-01-28
浏览: 次 go 不支持在单条 `var` 语句中同时声明多变量并用多值函数调用初始化,必须拆分为显式声明 + 多变量赋值两步,或使用括号块声明后统一赋值。
在 Go 中,当函数返回多个值(如 func foo() (bool, string))时,若希望避免短变量声明语法(b, s := foo()),而坚持使用 var 显式声明类型,需注意:Go 语法不支持类似 var b bool, s string = foo() 的写法——这会触发编译错误 multiple assignment in declaration requires parenthesized type 或类似提示,因为 Go 的 var 声明语句不允许在单行中混合类型声明与多值初始化。
正确的替代方案有两种,均符合 Go 的语法规范且保持类型明确性:
✅ 方式一:分步声明 + 并行赋值
先分别声明变量,再通过空白标识符或完整接收进行赋值:
var b bool var s string b, s = foo() // 此处为纯赋值(非声明),类型已由 var 确定
✅ 方式二:var 块声明 + 统一赋值(推荐用于相关变量)
使用 var () 块提升可读性,尤其适合逻辑关联的多个变量:
var (
b bool
s string
)
b, s = foo()⚠️ 注意事项:
- b, s = foo() 是多变量赋值语句,不是声明;左侧变量必须已在作用域中声明(否则报错 undefined)。
- 不可写作 var b, s = foo()(缺少类型)或 var b bool, s string = foo()(语法非法)——Go 没有“带类型的多变量初始化 shorthand var”语法。
- 若函数返回值中某些值无需使用,可用空白标识符 _ 忽略,例如:b, _ = foo()(此时仍需先声明 b bool)。
? 总结:Go 的设计哲学强调简洁与明确。虽然 b, s := foo() 是最惯用、最符合语言习惯的写法,但当你因代码规范、教学演示或类型显式性要求必须使用 var 时,请始终遵循“先声明、后赋值”的两步原则。这是类型安全与语法合法性的双重保障。
# 这是
# 多个
# 当你
# 这会
# 有两种
# 已在
# 不支持
# go
# golang
# String
# 报错
# var
# 作用域
# 标识符
# bool
# undefined
# 两步
# 编译错误
# 已由
# 代码规范
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- 微信短链接怎么还原php_用浏览器开发者工具抓包获
- Python变量绑定机制_引用模型解析【教程】
- Win11屏幕亮度突然变暗怎么解决_自动变暗问题处
- Python脚本参数接收_sys与argparse
- php订单日志怎么记录评价_php记录订单评价日志
- php中常量能用::访问吗_类常量与作用域操作符使
- 如何在Golang中实现自定义Benchmark_
- MAC的“接续互通”功能无法使用怎么办_MAC检查
- 如何在 Go 中判断变量是否为函数类型
- Windows10如何彻底关闭自动更新_Win10
- Windows10系统更新错误0x80070002
- Windows10如何更改盘符名称_Win10重命
- 如何使用正则表达式精确匹配最多含一个换行符的 st
- PHP 中 require() 语句返回值的用法详
- Mac的访达(Finder)怎么用_Mac文件管理
- c++如何利用doxygen生成开发文档_c++
- Win11怎样安装网易云音乐_Win11安装网易云
- Mac怎么设置登录项_Mac管理开机自启动程序【教
- Mac如何开启夜览模式_Mac护眼模式设置与定时
- c++怎么使用std::tuple存储多元组数据_
- 如何用正则与预处理高效拦截带干扰符的恶意域名
- Win11声音太小怎么办_Windows 11开启
- Win11怎么用设置清理回收站_Win11设置清理
- 如何优化Golang Web性能_Golang H
- Win10如何卸载自带Edge_Win10彻底卸载
- MAC怎么截图并快速编辑_MAC自带截图快捷键与标
- C#如何使用Channel C#通道实现异步通信
- php中::能用于接口静态方法吗_接口静态方法调用
- Windows系统文件被保护机制阻止怎么办_权限不
- Go 语言标准库为何不提供泛型切片的 Contai
- C++如何获取CPU核心数?(std::threa
- 跨文件调用类方法怎么用_php作用域操作符与自动加
- C++如何编写函数模板?(泛型编程入门)
- php中$this和::能混用吗_对象与静态作用域
- Win11怎么激活Windows10_Win11激
- 如何使用正则表达式批量替换重复的星号-短横模式为固
- php查询数据怎么导出csv_查询结果转csv文件
- 电脑无法识别U盘怎么办 Windows磁盘管理与驱
- Windows10如何更改日期格式_Win10区域
- Windows 11怎么更改锁屏超时时间_Wind
- Mac如何整理桌面文件_Mac使用堆栈功能一键整理
- Win11怎么恢复出厂设置_Win11重置此电脑保
- 如何使用Golang实现多重错误处理_Golang
- php485能和物联网模块通信吗_php485对接
- 如何在Golang中实现CI/CD流水线自动化测试
- Mac版Final Cut Pro入门_Mac视频
- 如何使用Golang配置安全开发环境_防止敏感信息
- Win11怎么设置虚拟内存最佳大小_Windows
- Win11怎么关闭边缘滑动手势_Windows11
- Python高性能计算项目教程_NumPyCyth


QQ客服