变量和声明 | 第一章 · 基础 |《Go 简易教程》| Go 技术论坛


本站和网页 https://learnku.com/docs/the-little-go-book/var_decl/3299 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

变量和声明 | 第一章 · 基础 |《Go 简易教程》| Go 技术论坛
Go
话题列表
社区 Wiki
优质外文
招聘求职
Go 实战教程
社区文档
登录
注册
Go 简易教程
展开或关闭
关于本书
软件版权
项目说明
第一章 · 基础
入门
编译
变量和声明
静态类型
类 C 语法
垃圾回收
运行 go 代码
导入包
函数声明
继续之前
第二章 · 结构体
声明和初始化
结构体上的函数
构造器
结构体的字段
new
组合
指针类型和值类型
继续之前
第三章 · 映射、数组和切片
数组
切片
指针类型和值类型
映射
继续之前
第四章 · 代码组织和接口
包管理
接口
继续之前
第五章 · 花絮
错误处理
defer
初始化的if
go语言风格
空接口和转换
字符串和字节数组
函数类型
继续之前
第六章 · 并发
go协程
同步
通道
继续之前
总结
总结
Go
首页
Laravel
Go
PHP
Vue.js
Python
Java
MySQL
Rust
LK
Elasticsearch
F2E 前端
Server
程序员
Database
DevTools
Computer Science
手机开发
AdonisJS
社区
Wiki
教程
Go 实战教程首页
《G01 Go 实战:Web 入门》
《G02 Go API 实战》
《GX1 Golang 五分钟视频》
文档
社区文档首页
《高效的 Go 编程 Effective Go》
《Go Blog 中文翻译》
《Go 简易教程》
《Go 编程实例 Go by Example》
《Go 入门指南》
《Go 编程基础(视频)》
《Go Web 编程》
《Iris 框架中文文档》
《通过测试学习 Go 编程》
《Gin 框架中文文档》
《GORM 中文文档》
《Go SQL 数据库教程》
登录
注册
微信登录
提交改进
变量和声明
Go 简易教程
未匹配的标注
变量和声明
如果我们用 x = 4 来声明和赋值变量,那么我们就可以同时开始和结束对变量的查看了。遗憾的是,Go 更为复杂些。我们将通过简单的示例来开始我们的学习。然后,在下一章中,我们会在创建和使用结构体时,进一步扩展。尽管如此,你可能还得花一段时间来适应,才能感受到它带给你的舒适感。
你可能会想:“哇!这有什么复杂的?”。 让我们开始一个例子。
下面的例子是 Go 中,声明变量和赋值最为明确的方法,但也是最为冗长的方法:
package main
import (
"fmt"
func main() {
var power int
power = 9000
fmt.Printf("It's over %d\n", power)
这里我们定义了一个 int 类型的变量 power。默认情况下,Go 会为变量分配默认值。Integers 的默认值是 0,booleans 默认值是 false,strings 默认值是 "" 等等。下面,我们创建一个值为 9000 的名为 power 的变量。我们可以将定义和赋值两行代码合并起来:
var power int = 9000
不过,这么写太长了。Go 提供了一个方便的短变量声明运算符 := ,它可以自动推断变量类型,但是这种声明运算符只能用于局部变量,不可用于全局变量:
power := 9000
这非常方便,它可以跟函数结合使用,就像这样:
func main() {
power := getPower()
func getPower() int {
return 9001
值得注意的是要用 := 来声明变量以及给变量赋值。相同变量不能被声明两次(在相同作用域下),如果你尝试这样,会收到错误提示。
func main() {
power := 9000
fmt.Printf("It's over %d\n", power)
// 编译器错误:
// := 左侧不是新的变量
power := 9001
fmt.Printf("It's also over %d\n", power)
编译器会告诉你 * := 左侧不是新的变量*。这就意味着当我们首次声明一个变量时应该使用 := ,后面再给变量赋值时应该使用 =。这似乎很有道理,但是凭空来记忆且需要根据情况来切换却是很难的事。
如果你仔细阅读代码的错误信息,你会发现 variables 单词是个复数,即有多个变量,那是因为go支持多个变量同时赋值(使用 = 或者 :=):
func main() {
name, power := "Goku", 9000
fmt.Printf("%s's power is over %d\n", name, power)
另外,多个变量赋值的时候,只要其中有一个变量是新的,就可以使用:=。例如:
func main() {
power := 1000
fmt.Printf("default power is %d\n", power)
name, power := "Goku", 9000
fmt.Printf("%s's power is over %d\n", name, power)
尽管变量 power 使用了两次:=,但是编译器不会在第 2 次使用 :=时报错,因为这里有一个新的 name变量,它可以使用:=。然后你不能改变 power 变量的类型,它已经被声明成一个整型,所以只能赋值整数。
到目前为止,你最后需要了解的一件事是,Go 会像 import 一样,不允许你在程序中拥有未使用的变量。例如:
func main() {
name, power := "Goku", 1000
fmt.Printf("default power is %d\n", power)
这将不会通过编译,因为 name 是一个被声明但是未被使用的变量,就像 import 的包未被使用时,也将会导致编译失败,但总的来说,我认为这有助于提高代码的清洁度和可读性。
还有更多关于声明和赋值的技巧。初始化一个变量时,请使用:var NAME TYPE;给变量声明及赋值时,请使用: NAME := VALUE ; 给之前已经声明过的变量赋值时,请使用: NAME = VALUE
本文章首发在 LearnKu.com 网站上。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
原文地址:https://learnku.com/docs/the-little-go-b...
译文地址:https://learnku.com/docs/the-little-go-b...
上一篇
下一篇
Markdown 文本
纠错改进
贡献者:3
推荐文章:
更多推荐...
分享
分享最近在百度和米哈游的 Go 岗位面试
59
57
1年前
博客
Go 语言—数据结构和算法项目推荐
34
1年前
博客
精选的 Go 框架,库和软件的精选清单
118
20
2年前
翻译
教程:使用 go 的 gin 和 gorm 框架来构建 RESTful API 微服务
41
3年前
分享
[初学者] 优质 Go 框架,书籍和软件清单
13
4年前
博客
go 的 [] rune 和 [] byte 区别
25
4年前
讨论数量: 0
发起讨论
只看当前版本
暂无话题~
社区赞助商
成为赞助商
关于 LearnKu
LearnKu 是终身编程者的修道场
做最专业、严肃的技术论坛
LearnKu 诞生的故事
资源推荐
《社区使用指南》
《文档撰写指南》
《LearnKu 社区规范》
《提问的智慧》
服务提供商
其他信息
成为版主
所有测验
联系站长(反馈建议)
粤ICP备18099781号-6
粤公网安备 44030502004330号
违法和不良信息举报
由 Summer 设计和编码 ❤
请登录
提交
忘记密码?
or
注册
第三方账号登录
微信登录
GitHub 登录
内容举报
匿名举报,为防止滥用,仅管理员可见举报者。
我要举报该,理由是:
垃圾广告:恶意灌水、广告、推广等内容
无意义内容:测试、灌水、文不对题、消极内容、文章品质太差等
违规内容:色情、暴利、血腥、敏感信息等
不友善内容:人身攻击、挑衅辱骂、恶意行为
科学上网:翻墙、VPN、Shadowsocks,政策风险,会被关站!
不懂提问:提问太随意,需要再做一遍《提问的智慧》测验
随意提问:提问没有发布在社区问答分类下
排版混乱:没有合理使用 Markdown 编写文章,未使用代码高亮
内容结构混乱:逻辑不清晰,内容混乱,难以阅读
标题随意:标题党、标题不释义
尊重版权:分享付费课程、破解软件(付费),侵犯作者劳动成果
其他理由:请补充说明
举报
取消