常量
-
常量使用const 修改,类似C语言中的define。
-
常量定义的时候必须初始化,语法: const <常量名称> [type] = xxx
-
常量不能修改。
-
常量只能赋值bool,数字,字符串。
-
常量类型推导计算赋值是可以的: const num = 4/2
-
装B写法:
const (
a = itoa //a=0
b //a+1 = 1
c //b+1 = 2
d,e
)关于iota说明:
package main import "fmt" func main() { const ( a = iota b c d,e = iota,iota //每一行增加1,同行所有数据一致,不++ ) fmt.Println(a,b,c,d,e) }
-
常量命名也是通过首字母大小写来控制访问范围。
变量:
- 程序的基本组成单位。
- 变量相当于内存中的一个数据存储空间,通过变量名可以访问到变量值。
- 变量使用:声明&赋值,使用 ----> var <var_name> <var_type> [= xxx],
例如: var num int = 200 或 var num int ; num = 200 上述两个是一回事儿。
变量使用注意事项(重要):
-
所有代码必须要加载到内存中运行,变量表示内存中一个存储区域。
-
该区域有自己的名称和类型。
-
变量赋值过程,var num int:定义了一个int型、名字是num的变量,默认是0, num = 200: 赋值后200替换了内存中的0,从而完成了赋值。
后面fmt.Println(num) 则是在控制台打印出变量值 -
变量赋值类型,通过下方的代码段和注释来观察,尤其是第三种形式:
package main import "fmt" func main() { //如果i不赋值,那么int默认值就是0 var i int fmt.Println(i) //不指定num的变量类型,通过赋值则Go做出了类型推导int var num = 200 fmt.Println(num) //同理,num1如果是赋予小数,那么就是float了 var num1 = 10.5 fmt.Println(num1) //var都不写,变量这种方式都不写,使用"<var_name> := xx",这样也叫作声明变量 name := "durant" fmt.Println(name) }
-
一次性声明多个变量:
package main import "fmt" func main() { //一次性声明多个变量传统写法 var st1 int var st2 int var st3 int fmt.Println(st1,st2,st3) //简化1 var st4,st5,st6 int fmt.Println(st4,st5,st6) //上述两种方法都只能定义一种类型,所以做如下类型推导 var st7,st8 = "xiaoming",11 fmt.Println(st7,st8) //类型推导2 st9,st10,st11 := "alibaba","tencent",666 fmt.Println(st9,st10,st11) }
-
全局变量:
package main import "fmt" //全局变量定义传统 var name1 = "james" var age1 = 34 var gender1 = "male" //全局变量定义美观版本 var( name2 = "durant" age2 = 32 gender2 = "male" ) //尝试使用 name3,age3,gender3 := "adtkb",24,"male" 是不可以的,所以定义全局变量只有两种 func main() { fmt.Println(name1,age1,gender1) fmt.Println(name2,age2,gender2) }
-
变量的数据值只能在同一类型范围内不断变化,不能由int变为str
package main import "fmt" func main() { //变量一定以最后一次赋值为基准 var num int num = 20 num = 30 num = 40 fmt.Println(num) //不可以改变数据类型,num=1.5这个也是不合规的 //var num int //num = 20 //var num = "alibaba" //fmt.Println(num) //这种肯定不可取 }
-
变量在同一个作用域不能重名,这个不用说了,同一个作用域内不可能有两个变量重名,且变量值不同。
-
变量三要素:变量名,变量值,变量数据类型
-
变量如果只定义,没有复制,那么Go编译器会使用默认值,
int默认值为0,整数。
string默认值为",空串。
float32默认值为0,单精度小数。
附加知识:
DOS常用指令:
目录操作:
dir //查看当前目录下所有文件
cd /d d: //切换到d盘
cd d:\test //切换到d盘下的test目录中,这里涉及相对路径和绝对路径
cd … //切换到上一级目录
md d:\test1 //新建一个目录
md d:\test3 d:\test2 //新建多个目录
rd d:\test2 d:\test3 //删除多个目录(空dir)
rd d:\test1 //删除单个目录(空dir)
rd /q/s test1 //删除单个目录以及内部内容,/q:静默模式不询问, /s:层级(递归)删除所有,类似linux中 -r
文件操作:
echo xxx > d:\test.txt //d盘创建一个txt文件,内部写入xxx,xxx不用描述成字符串类型"xxx",输入什么,文本里面就是什么
copy test.txt d:\shit\test1.txt //将d盘根目录下的test.txt文件拷贝到d:\shit下,并且重命名为test1.txt,前提是目的文件夹必须存在
move test.txt d:\shit //将d盘根目录下的test.txt文件移动(剪切)到d:\shit下,前提是目的文件夹必须存在,也可重命名
del test.txt //删除一个文件
其他操作:
cls //清屏,类似clear
exit //退出cmd
程序中"+"的使用:
- 两边都是数值型的,做加法运算。
- 两边都是字符串的,做字符串拼接。
代码块儿举例:
package main
import "fmt"
func main() {
//整数类型
i,j := 10,20
var res = i + j
fmt.Println(res)
//小数类型
k,l := 10.6,20.3
var res1 = k + l
fmt.Println(res1)
//整数加小数类型没法做,会报错,告诉mismatch int float64 待解决
//字符串类型
str1,str2 := "very","good"
var res3 = str1 + str2
fmt.Println(res3)
}