Golang入门教程(四)变量声明
Go 语言变量名由字母、数字、下划线组成,其中首个字母不能为数字。
一、Go的语言结构
1、Go的语言基础部分由这几个部分组成
- 包声明
- 引入包
- 函数
- 变量
- 语句&表达式
- 注释
比如下面这个简单的代码:
1 2 3 | func main() { fmt .Println( "第一个程序" ) } |
需要注意的是,如果想把单独的.go文件作为独立的可执行文件的时候。需要在代码的第一行加上
1 | package main |
文件的入口方法为:
1 2 3 | func main(){ } |
go的语法和c是很像的,但是又没有c那么底层。所以有c基础的人,学习go会特别的快。需要注意的一点是:
go声明变量的时候是把变量类型放在变量的后面的,如下所示:
1 | var userName string = "Tinywan" |
go也可以不指定数据类型,但是必须要赋值。如果不赋值,自动类型检查就无法起到作用,如下所示:
1 | var userName = "Tinywan" // 或者var userName = "" |
附一个空格值给变量也是可以的,就是不能不赋值,也不能为null。而且在go中也没有null的概念,取而代之的是nil:意思为0、无的意思。(Lua也是这样子的)
还可以使用默认值,如下所示:
var res bool
二、GO语言变量声明的方式
1、指定变量类型,声明后如果不做赋值,那么使用默认值
1 2 | // 没有进行赋值,但是指明了是什么类型、go会自动加上空值。 var a string |
2、不指定变量类型,需要进行赋值操作。
1 2 | // 可以不指定变量类型,通过变量值,go会自行判断该变量的类型。 var a=1 |
3、不使用var关键字,直接:=对变量进行赋值操作。
1 2 | //这种方式是省略了var,但是这种方式能对新的变量使用,对已经声明的变量使用会报错。 a:=1 |
注意:三种变量的声明形式的作用都是一样的,要么赋值可自动判断其类型,要么不赋值,指定变量类型,就这么两点。还需要注意的是,go的变量是如果被声明了,那么必须使用,不然会报错,如果不想使用可以加上_=varName,表示为已抛弃的变量。
1 2 3 4 | //已声明,但未使用 var a=1 //标识为已抛弃的变量。 _=a |
4、go的变量在已经被声明后,是不能使用:=再次赋值的。
1 2 3 | //这样是错误的 var a=1 a:=2 |
但是可以使用=为已声明的变量赋新的值。
1 2 3 | //这样做是可以的。 var a=1 a=2 |
而且如果变量值没被使用,那么请加上以抛弃的标识。
1 | _=a |
5、go可以直接声明多个变量,通过函数可以返回多个返回值,比如:
1 2 3 4 5 6 7 8 9 10 | //一次性声明所有的变量类型为string类型 var name1,name2,name3 string //函数返回多个返回值 func getName(name1,name2,name3,name4){ return "aa" , "bb" , "cc" , "dd" } //返回多个返回的值的函数需要用多个变量进行接受 var a, b, c, d = getName() |
6、go可使用var关键字声明全局变量,但是:=这种方式是不能用在全局变量中的。:=只能用在函数体内部。
1 2 3 4 5 6 7 | var ( a int b bool xx,yy,dd string= "xx" , "yy" , "dd" //这里省略变量类型也是可以的。 zz,aa= "zz" , "aa" ) |
比如像这样,这样做会报语法错误
1 2 3 | var ( a:=1 ) |
1 | syntax error: unexpected := |
分类:
Golang/Java/Rust
标签:
Go
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构