wordpress 不显示文章归档,郑州网站建设及优化,南宁建网站必荐云尚网络,天津+交友+网站建设对于只有 Python 语言经验的朋友#xff0c;也许会不太理解声明这个词#xff0c;在 Python 中直接拿来就用#xff0c;也不用声明类型啥的。
Go 语言是静态类型语言#xff0c;由于编译时#xff0c;编译器会检查变量的类型#xff0c;所以要求所有的变量都要有明确的类…对于只有 Python 语言经验的朋友也许会不太理解声明这个词在 Python 中直接拿来就用也不用声明类型啥的。
Go 语言是静态类型语言由于编译时编译器会检查变量的类型所以要求所有的变量都要有明确的类型。
变量在使用前需要先声明。声明类型就约定了你这个变量只能赋该类型的值。
声明一般有以下四种方法其中前面两种同样也可用于定义常量只需把关键字 var 变成 const 即可。
第一种 一行声明一个变量
var
其中 var 是关键字固定不变name 是变量名type 是类型。
使用 var 虽然只指定了类型但是 Go 会对其进行隐式初始化比如 string 类型就初始化为空字符串int 类型就初始化为0float 就初始化为 0.0bool类型就初始化为false指针类型就初始化为 nil。
若想在声明过程顺便也初始化可以这样写
var name sting Python编程时光
在 Go 文件中的完整代码如下为了不写重复性的代码后续不再貼完整代码只貼关键代码
package main
import fmt
func main() {
var name string Python编程时光
fmt.Println(name)
}
从右值等号右边的值rvalue来看明显是个 string 类型这里要注意在 Python 双引号与单引号等价但在 Go 中双引号和单引号是不一样的这里要一定要使用双引号表示字符串而在单引号表示rune 类型的字符这个后续会单独介绍因此也可以将其简化为
var name Python编程时光
若你的右值带有小数点在不指定类型的情况下编译器会将你的这个变量声明为 float64但是很多情况下我们并不需要这么高的精度占用的内存空间更大
这种情况下推荐指定类型不要偷懒
var rate float32 0.89
第二种多个变量一起声明
声明多个变量除了可以按照上面写成多行之外还可以写成下面这样
var (
name string
age int
gender string
)
第三种声明和初始化一个变量
使用 : 推导声明写法或者短类型声明法编译器会自动根据右值类型推断出左值的对应类型。可以声明一个变量并对其进行显式初始化。
name : Python编程时光
// 等价于
var name string Python编程时光
// 等价于
var name Python编程时光
但这种方法有个限制就是只能用于函数内部
第四种声明和初始化多个变量
name, age : wangbm, 28
这种方法也经常用于变量的交换
var a int 100
var b int 200
b, a a, b
第五种new 函数声明一个指针变量
在这里要先讲一下指针的相关内容。
变量分为两种 普通变量 和 指针变量
普通变量存放的是数据本身而指针变量存放的是数据的地址。
如下代码age 是一个普通变量存放的内容是 28而 ptr 是 存放变量age值的内存地址0xc000010098
package main
import fmt
func main() {
var age int 28
var ptr age // 后面接变量名表示取出该变量的内存地址
fmt.Println(age: , age)
fmt.Println(ptr: , ptr)
}
输出
age: 28
ptr: 0xc000010098
而这里要说的 new 函数是 Go 里的一个内奸函数。
使用表达式 new(Type) 将创建一个Type类型的匿名变量初始化为Type类型的零值然后返回变量地址返回的指针类型为*Type。
package main
import fmt
func main() {
ptr : new(int)
fmt.Println(ptr address: , ptr)
fmt.Println(ptr value: , *ptr) // * 后面接指针变量表示从内存地址中取出值
}
输出
ptr address: 0xc000010098
ptr value: 0
用new创建变量和普通变量声明语句方式创建变量没有什么区别除了不需要声明一个临时变量的名字外我们还可以在表达式中使用new(Type)。换言之new函数类似是一种语法糖而不是一个新的基础概念。
如下两种写法可以说是等价的
// 使用 new
func newInt() *int {
return new(int)
}
// 使用传统的方式
func newInt() *int {
var dummy int
return dummy
}
以上不管哪种方法变量/常量都只能声明一次声明多次编译就会报错。
但也有例外这就要说到一个特殊变量匿名变量也称作占位符或者空白标识符用下划线表示。
匿名变量优点有三
不分配内存不占用内存空间
不需要你为命名无用的变量名而纠结
多次声明不会有任何问题
通常我们用匿名接收必须接收但是又不会用到的值。
func GetData() (int, int) {
return 100, 200
}
func main(){
a, _ : GetData()
_, b : GetData()
fmt.Println(a, b)
}本篇文章由一文多发平台ArtiPub自动发布