go的100天之旅-03变量(代码片段)

pirate-hcc pirate-hcc     2022-12-05     290

关键词:

变量

变量介绍

变量这个词来源于数学,类似方程中的x、y,代表的是存储在计算机中的值。这里主要介绍Go和其它编程语言不一样的地方,在前面我们提到过,Go是一门静态语言。静态语言区别动态语言一个重要的特性就是变量的类型不可变,一般是在声明的时候就指定类型,之后就不可修改它的类型,而动态语言可以随时修改变量的类型。Go的变量可以在声明的时候不指定类型而是直接赋值,Go会自动根据值判断变量的类型,比如:

var i = 1

当然这时i的类型(int)也就确定了之后不能修改i的类型。
也可以声明的时候指定类型:

var i int

这里面的i就是int类型。如果变量声明的时候没有给定初始值,那默认就是零值,比如:

var i int
var s string

fmt.Println(i)
fmt.Println(s)

输出是:

0


这里string的零值是""。bool类型的零值是false,以后讲到的指针类型零值是nil

Go的简短形式:=声明

上面介绍过,Go可以在变量定义的时候比指定类型,系统自动判断类型,那声明的变量的时候加上var是不是感觉有点多余了。Go可以用:=这种写法直接声明变量例如:

i := 5
a := false

这时i就是int类型值为5a就是bool类型值为false,需要注意的是它只能被用在函数中,不能全局的声明变量例如:

package main

import "fmt"
i := 1

func main() 
    fmt.Println(i)

这样是不行的。
还有就是相同的变量,在同一个代码块中只能这样被声明一次,第二次声明也是错误的例如:

package main

import "fmt"

func main() 
    i := 1
    i : = 2
    fmt.Println(i)

这样也会报错。

多变量声明

多变量声明是指一次可以声明多个变量例如

var i, j, k int
i, j, k = 0, 1, 2

var m, n = 1, 2
var a, b = 1, false

需要指出的是多个变量声明可以指定不通的类型例如上面 var a, b = 1, false
也支持:=形式的多变量声明

a, b := 1, false

只要 := 左侧出现了新的变量就可以例如:

a, b := 1, false
b, c := false, 1



go语言学习之旅--基础语法(代码片段)

变量变量有三种声明方式第一种:var变量名类型=值variint=10第二种:var变量名=值varj=10第三种:变量名:=值,自动推导类型name:="zjc"一些特殊的情况:一次声明多个变量,变量名和值... 查看详情

go语言学习之旅--结构体(代码片段)

结构体go语言类型定义go语言类型别名go语言类型定义和类型别名的区别结构体go语言结构体的定义声明一个结构体变量结构体的初始化访问结构体成员匿名结构体结构体指针举例使用new关键字创建结构体指针访问结构体指针成员... 查看详情

go语言学习之旅--结构体(代码片段)

结构体go语言类型定义go语言类型别名go语言类型定义和类型别名的区别结构体go语言结构体的定义声明一个结构体变量结构体的初始化访问结构体成员匿名结构体结构体指针举例使用new关键字创建结构体指针访问结构体指针成员... 查看详情

go语言学习之旅--结构体(代码片段)

结构体go语言类型定义go语言类型别名go语言类型定义和类型别名的区别结构体go语言结构体的定义声明一个结构体变量结构体的初始化访问结构体成员匿名结构体结构体指针举例使用new关键字创建结构体指针访问结构体指针成员... 查看详情

go语言学习之旅--基础语法(代码片段)

变量变量有三种声明方式第一种:var变量名类型=值variint=10第二种:var变量名=值varj=10第三种:变量名:=值,自动推导类型name:="zjc"一些特殊的情况:一次声明多个变量,变量名和值... 查看详情

go入门-包,函数和变量(代码片段)

主要内容来自中文版的同名教程Go语言之旅其目的为总结要点包,函数和变量包import语法,多个用括号换行扩起,包之间不需要间隔符,用引号引起import("fmt""math/rand")//官方认为分组导入比多个导入更好//用`.`引用包内对象,仅有... 查看详情

leetcode刷题100天—856.括号的分数(栈)—day03(代码片段)

前言:作者:神的孩子在歌唱大家好,我叫运智给定一个平衡括号字符串S,按下述规则计算该字符串的分数:()得1分。AB得A+B分,其中A和B是平衡括号字符串。(A)得2*A分,其中A是平衡括号字符串。示例1:输入:"()"输出:1示例2... 查看详情

leetcode刷题100天—856.括号的分数(栈)—day03(代码片段)

前言:作者:神的孩子在歌唱大家好,我叫运智给定一个平衡括号字符串S,按下述规则计算该字符串的分数:()得1分。AB得A+B分,其中A和B是平衡括号字符串。(A)得2*A分,其中A是平衡括号字符串。示例1:输入:"()"输出:1示例2... 查看详情

leetcode刷题100天—226.翻转二叉树(二叉树)—day03(代码片段)

前言:作者:神的孩子在歌唱大家好,我叫运智翻转一棵二叉树。示例:输入:4/\\27/\\/\\1369输出:4 查看详情

leetcode刷题100天—226.翻转二叉树(二叉树)—day03(代码片段)

前言:作者:神的孩子在歌唱大家好,我叫运智翻转一棵二叉树。示例:输入:4/\\27/\\/\\1369输出:4 查看详情

go语言学习之旅--go语言环境安装(代码片段)

前言笔者已经自学python大概已经几个月了,但是工作繁忙,而且工作中未用到python的知识。于是就渐渐生疏了,这是下定决心学习go,是因为公司有一台go编写的报表系统,而且公司逐渐在想docker转,学习go更又助于未来的工作。... 查看详情

go语言学习之旅--函数(代码片段)

函数GoLang函数介绍Go语言中函数特性函数的定义匿名函数闭包deferinit函数GoLang函数介绍函数的go语言中的一级公民,我们把所有的功能单元都定义在函数中,可以重复使用。函数包含函数的名称、参数列表和返回值类型... 查看详情

go学习之旅go语言安装及环境配置教程(代码片段)

一、前言Go(又称Golang)是Google开发的一种静态强类型、编译型的编程语言。Go语言的主要特点包括:自动垃圾回收、更丰富的内置类型、函数多返回值、错误处理、匿名函数和闭包、类型和接口、并发编程、反射、语言交互性... 查看详情

go语言学习之旅--函数(代码片段)

函数GoLang函数介绍Go语言中函数特性函数的定义匿名函数闭包deferinit函数GoLang函数介绍函数的go语言中的一级公民,我们把所有的功能单元都定义在函数中,可以重复使用。函数包含函数的名称、参数列表和返回值类型... 查看详情

leetcode刷题100天—83.删除排序链表中的重复元素(链表)—day03(代码片段)

前言:作者:神的孩子在歌唱大家好,我叫运智存在一个按升序排列的链表,给你这个链表的头节点head,请你删除所有重复的元素,使每个元素只出现一次。返回同样按升序排列的结果链表。示例1:输入:head=[ 查看详情

leetcode刷题100天—83.删除排序链表中的重复元素(链表)—day03(代码片段)

前言:作者:神的孩子在歌唱大家好,我叫运智存在一个按升序排列的链表,给你这个链表的头节点head,请你删除所有重复的元素,使每个元素只出现一次。返回同样按升序排列的结果链表。示例1:输入:head=[ 查看详情

go语言学习之旅--接口(代码片段)

接口接口实现接口必须实现接口中的所有方法golang接口值类型接收者和指针类型接收者golang接口和类型的关系一个类型实现多个接口多个类型实现同一个接口golang接口嵌套接口go语言的接口,是一种新的类型定义,它把所... 查看详情

go语言学习之旅--文件os(代码片段)

Go语言学习之旅--文件os库OS文件、目录操作File文件读操作File文件写操作os包进程相关操作os包和环境相关的方法博客根据B站《golang入门到项目实战[2021最新Go语言教程,没有废话,纯干货》视频整理的,如有错误请大... 查看详情