Go核心开发学习笔记(二) —— 常量与变量

常量

  1. 常量使用const 修改,类似C语言中的define。

  2. 常量定义的时候必须初始化,语法: const <常量名称> [type] = xxx

  3. 常量不能修改。

  4. 常量只能赋值bool,数字,字符串。

  5. 常量类型推导计算赋值是可以的: const num = 4/2

  6. 装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)
    }
    
  7. 常量命名也是通过首字母大小写来控制访问范围。

变量:

  1. 程序的基本组成单位。
  2. 变量相当于内存中的一个数据存储空间,通过变量名可以访问到变量值。
  3. 变量使用:声明&赋值,使用 ----> var <var_name> <var_type> [= xxx],
    例如: var num int = 200 或 var num int ; num = 200 上述两个是一回事儿。

变量使用注意事项(重要):

  1. 所有代码必须要加载到内存中运行,变量表示内存中一个存储区域。

  2. 该区域有自己的名称和类型。

  3. 变量赋值过程,var num int:定义了一个int型、名字是num的变量,默认是0, num = 200: 赋值后200替换了内存中的0,从而完成了赋值。
    后面fmt.Println(num) 则是在控制台打印出变量值

  4. 变量赋值类型,通过下方的代码段和注释来观察,尤其是第三种形式:

    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)
    }
    
  5. 一次性声明多个变量:

    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)
    }
    
  6. 全局变量:

    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)
    }
    
  7. 变量的数据值只能在同一类型范围内不断变化,不能由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)
    //这种肯定不可取
    
    }
    
  8. 变量在同一个作用域不能重名,这个不用说了,同一个作用域内不可能有两个变量重名,且变量值不同。

  9. 变量三要素:变量名,变量值,变量数据类型

  10. 变量如果只定义,没有复制,那么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

程序中"+"的使用:

  1. 两边都是数值型的,做加法运算。
  2. 两边都是字符串的,做字符串拼接。

代码块儿举例:

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)
}
发布了50 篇原创文章 · 获赞 18 · 访问量 4028

猜你喜欢

转载自blog.csdn.net/weixin_41047549/article/details/89540418