温州阀门外贸网站建设,国外做装饰画的网站,网站开发精品课程,小学门户网站建设1. 变量
Go 语言是静态类型语言#xff0c;由于编译时#xff0c;编译器会检查变量的类型#xff0c;所以要求所有的变量都要有明确的类型 。
变量在使用前#xff0c;需要先声明。声明类型#xff0c;就约定了你这个变量只能赋该类型的值。
1.1 变量声明
格式#x…1. 变量
Go 语言是静态类型语言由于编译时编译器会检查变量的类型所以要求所有的变量都要有明确的类型 。
变量在使用前需要先声明。声明类型就约定了你这个变量只能赋该类型的值。
1.1 变量声明
格式var 变量名 类型 值
声明方式大概有四种若声明时没有初始化那么其默认值为该数据类型的 0 值比如 string 类型就初始化为空字符串int 类型就初始化为0float 就初始化为 0.0bool 类型就初始化为 false指针类型就初始化为 nil
1、一行声明一个变量并初始化值
var name string 变量2、一次声明多个变量
var (age intgender string)3、声明和初始化一个变量
使用 :让编译器自动根据右侧的值推测出左侧的变量数据类型这种方法只能用于函数内部
name : Go 变量// 等同
var name string Go 变量4、声明和初始化多个变量
name, age : rose, 18// 可以用来做变量交换
var a int 100
var b int 200
b, a a, b1.2 全局变量和局部变量
根据变量位置可将变量划分为全局变量和全局变量Go 变量有作用域之分每个大括号就是一个作用域每个作用域都可以有相应的局部变量。
全局变量
全局可使用
package mainimport fmt// 声明全局变量
var country 中国func main() {fmt.Println(country)country Chinafmt.Println(country)
}输出
中国
China注意全局变量首字母小写只能用于当前包中大写可用于其他包文件即外部可使用 局部变量
仅对应作用域可使用
package mainimport fmtfunc main() {// 声明局部变量在当前函数中使用var country Chinafmt.Println(country)if true {// 声明局部变量仅在 if 中使用var age 18fmt.Println(age)fmt.Println(country)}// age 不能在 if 作用域外使用// fmt.Println(age)}输出
China
18
Chinacountry 可在当前函数作用域中使用但 age 不能在 if 作用域外使用。
1.3 指针变量
变量分为两种
普通变量存储的为数据本身指针变量存储的为数据/内存地址
指针变量声明可以使用 new 函数也可以使用 普通变量
package mainimport fmtfunc main() {// 指针变量方法一var name string rosevar ptr name // 后面接变量名表示取出该变量的内存地址fmt.Println(name) // rosefmt.Println(ptr) // 0xc00005e270// 指针变量方法二 new 函数ptr2 : new(int)fmt.Println(ptr2) // 0xc0000a6090fmt.Println(*ptr2) // * 指针变量名表示从内存中取出值、0
}使用表达式 new(Type) 将创建一个Type类型的匿名变量初始化为Type类型的零值然后返回变量地址返回的指针类型为*Type。
1.4 匿名变量
常量和变量都只能声明一次声明多次就会编译报错匿名变量除外它有如下优点
不分配内存不占用内存空间不需要你为命名无用的变量名而纠结多次声明不会有任何问题
一般可以用来接收必须接收但又用不到的值
func GetData() (int, int) {return 100, 200
}
func main(){a, _ : GetData()_, b : GetData()fmt.Println(a, b)
}