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

posted @   潇潇暮鱼鱼  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示