go语言知识点
1.可以定义变量而不初始化,则变量默认零值(0/false/""),如var a ; int fmt.Println(a)
2.可以不指定变量类型,则系统根据变量的初始值判断变量类型。如 var a = true
3.变量作用域,如果想要在外部包中使用全局变量,变量的首字母必须大写
4.值传递和引用传递传递给函数的都是传递的变量,与原本的变量不能用==来判断,传递的是值或者地址。
值传递是值的拷贝,变量直接存储值,内存通常在栈中分配;地址传递是地址的拷贝,变量存储的是一个地址,内存通常在堆上分配,当没有任何变量引用这个地址时,改地址对应的分配空间成为一个垃圾由GC回收。引用传递的拷贝效率高。
值传递:基本数据类型int系列,float系列,bool,string,数组和结构体struct。
引用传递:指针,slice切片,map,管道chan,interface。函数内的变量可以修改函数外的变量,传入变量的地址&,函数内以指针的方式操作变量
5.定义后赋值的语法 " := " 不能 用在全局变量,只有函数内的局部变量可以用这种写法
var age int = 20 //ok,定义同时赋值是可以的
age := 20 //error,相当于 var age int ; age = 20是两个顺序语句,而在全局变量中不能有赋值语句age = 20所以是错误的。
6.在全局函数中有var name string = "tom",若在函数中定义并赋值name := "jack",定义采用就近原则,则全局变量的值仍为"tom";若在函数中直接赋值name = "jack",则全局变量变为jack
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?