Go语言学习之变量(The way to go)
来源:互联网 发布:淘宝查看行业消费人群 编辑:程序博客网 时间:2024/04/29 04:13
上一篇博客对go程序对整体结构进行了简要介绍,记忆对fmt包进行了简要介绍,今天跟大家分享的是go语言中的变量,variable。
var关键字
go语言使用var关键字来定义变量,但是和c++不同的是,类型放在变量的后面,格式如下:
var variable_list optional_data_type;
下面就简单定义几个变量:
var i, j, k intvar c, ch bytevar f, salary float32d = 42var a, s = 100, "abc" //混合变量声明
这里我们需要明确一下,为什么go会把变量的类型写在后面呢?
在c++中您是否记得这样的问题呢:
int *p, q
上面p为指针,q为int类型,给我们造成了很大的困扰。
另外可以已组的形式进行变量定义:
var( x, y int a, s = 100, "abc")
上面需要注意的是使用圆括号而不是花括号。
自动类型推断和零初始化
对于普通的变量,go语言也会给我们进行零初始化,避免了在c++中变量为垃圾值。
同样,可以省略变量类型,由编译器推断。
示例代码:
package mainimport "fmt"func main() { var a = 1 //自动推断a为int var b int //b初始化为0 fmt.Println(a,b)}
省略var的简短模式
有时候,我们可以省略var关键字,使用更加简洁的语法进行变量的定义和初始化:
package mainimport "fmt"func main() { a := 1 b, s := 2, "go" fmt.Println(a, b, s)}
这里有个容易被忽略的大坑,就是这种简短模式只能用在函数的内部
看下面的代码:
package mainimport "fmt"var x = 1func main() { fmt.Println(&x, x) x := 2 //重新定义了局部变量 fmt.Println(&x, x)}
输出:
0x160004 1
0x1040a140 2
当你写下下面的代码时候,就会报错,no new variables on left side of :=
y := 1 fmt.Println(&y, y) y := 2 fmt.Println(&y, y)
未使用的局部变量视为错误
注意,这里说的是局部变量,而不是全局变量:
package mainimport "fmt"var x = 1func main() { var a, s = 1, "abc" fmt.Println(a)}
错误:
s declared and not used
变量类型
最后就是介绍一下go中的变量类型:
boolstringint int8 int16 int32 int64uint uint8 uint16 uint32 uint64 uintptrbyte // alias for uint8rune // alias for int32 // represents a Unicode code pointfloat32 float64complex64 complex128
注意,没有double,但是有float64
这里就是简单提一下,之后还会进行更详细的关于类型,以及类型之间转换的介绍。
1 0
- Go语言学习之变量(The way to go)
- Go语言学习之Hello World(The way to go)
- Go语言学习之常量(The way to go)
- Go语言学习之运算符(The way to go)
- Go语言学习之流程控制(The way to go)
- Go语言学习之函数(The way to go)
- Go语言学习之字符串(The way to go)
- Go语言学习之map (The way to go)
- Go语言学习之指针(The way to go)
- Go语言学习之ioutil包(The way to go)
- Go语言学习之struct(The way to go)
- Go语言学习之interface(The way to go)
- Go语言学习之method(The way to go)
- Go语言学习之net包(The way to go)
- Go语言学习之bufio包(The way to go)
- Go语言学习之errors包(The way to go)
- Go语言学习之log包(The way to go)
- Go语言学习之runtime包(The way to go)
- 使用maven创建web项目
- Java基础(六) 集合之(二) 泛型及枚举类型
- Object C语言语法特点
- RecyclerView与CardView的使用
- 安卓开发360扫描出现病毒“盗号木马”
- Go语言学习之变量(The way to go)
- SSM框架——使用MyBatis Generator自动创建代码
- 很久没有写博客了,2017写些有质量的文章出来
- 内容访问者之获取联系人
- 【2】android底层驱动开发学习____及Ubuntu使用问题
- UNIX编程艺术学习笔记-1
- Android快速开发,十个最常用的框架
- [LeetCode]476. Number Complement(数字补码)
- learnR_input_3