• 20200323 Go语言基础


    课件

    最后三周(0323)

    5天go语言,docker,MongoDB,redis(高级用法),简历的制作
    5天,就业辅导  (数据接口与算法)
    数据库读写分离,mysql主从,redis主从,烧哨兵,数据库分表,分布式id生成,地理位置分析(微信附近的人)
    

    Go语言

    一. 介绍

    1. 简介

    go -- golong,2009  谷歌公司推出的编程语言
    python  1989  龟叔
    Java   1990   sun公司,被甲骨文公司收购
    

    最新的语言,10多年的时间,简单易用,但可能会有以下小bug,有不完善的地方(库少)

    2. 静态,强类型,编译型语言

    区别于python

    	- 静态: 类型在程序运行中不允许改变 
    	- 强类型: 不同类型之间不允许直接运算(10+'tt')
    	- 编译型: 先编译再执行 > > >  编译成可执行文件
             - 解释型语言,代码要运行在解释器之上
             -- c : 编译成 .dll(动态链接库),就是可执行文件
    		-- java: 解释型还是编译型? 
                有个编译过程,并不是编译成可执行文件,编译成 .cls文件,不能直接运行在操作系统上,他需要运行在jvm(java虚拟机上,就可以当做解释器)
            -- 无论在什么平台执行java程序,最少要安装java虚拟机.一处编码,处处运行(跨平台)
    
    

    3. 跨平台编译语言

    在不同平台可以编译出另一个平台的可执行文件

    - linux上安装软件,源码安装(make,make install),linux上安装python环境
    	c/c++ 写的代码不同平台的软件,需要先编译成可执行文件
        python写的代码: 需要安装解释器(不同平台),python代码直接打包成exe文件(在exe内部,打包进去了解释器)
        	- 图形化开发: gui(第三方包Tkinter)/pyqt
        java写的代码: 不同平台需要安装java虚拟机
        go: 只要编译完了,直接拿着执行就可以了(不同平台编译不同平台的可执行文件) 
        	- 要运行go写好的程序,直接拿着可执行文件,执行就可以了
        	
        	
            python:
                写接口 -- 新机器安装python,安装django,安装插件 -- 使用
            go:
                写代码 -- 编译成可执行 -- 新机器直接运行
            java:
                写完 -- 编译成jar或war包 -- 新机器安装jdk(版本) -- 执行
    

    4. 垃圾回收机制

    gc,c语言没有垃圾回收,变量定义了,不使用的话,需要自己释放掉
    

    5. 面向对象,过程

    支持面向对象和面向过程 (go不是一门纯粹的面向对象的语言,没有类的概念,但是可以实现面向对象的特性: 继承封装多态)
    

    6. go版本

    go也是由C写起来的(python也是c写的,django是有python写的)
    
    go1.5以后,都是自己实现自己
    

    7. 生态

    - Google 在用: k8s(容器编排)用go写的
    - docker(不是谷歌公司),用go写的
    - 腾讯蓝鲸
    - 手机百度 后端大量的go
    - 区块链: 用go写(可以任意语言写,第一款开源的区块链项目:用go写的)
    

    go特别适合服务端开发(高并发)

    将会统治下一个10年
    

    二. Go语言开发环境的搭建

    搭建开发环境,如果只是要执行go编译后的文件,不需要安装任何软件

    1. windows中安装

    https://www.cnblogs.com/zhangguosheng1121/p/11448194.html

    • go的下载安装(相当于python解释器):
    https://golang.google.cn/doc/install?download=go1.14.1.windows-amd64.msi   
    版本 1.11 以上即可
    一路下一步即可
    
    • IDE的下载安装 (Goland,VS code,Vim Go,liteIDE)
    - 建议使用Goland,跟pycharm是一家,jetbrains公司出的:注册码通用,操作习惯,99%跟pycharm一样
    - vs code: 免费的,微软的,go插件,python插件(也可以开发python)
    
    goland安装:
    	https://studygolang.com/dl
    	无脑下一步
    

    验证安装

    cmd窗口中: 
    	go version  # 显示出版本号
    	go env   # go的环境
    		-GOPATH: 用户目录下的go文件夹中
    		-GOROOT: 解释器安装路径 
    

    简单配置

    - GOPATH: 写的代码存放的路径,以后写的所有go的代码,必须放在GOPATH下,否则不能执行
    	有以下三个文件夹,如果没有需要创建出来
    	- src:  所有写的go相关的代码都存放在src文件夹中
    	- bin: 编译后的可执行文件位置
    	- pkg: 编译过程中出现的
    	
    - GOROOT: go解释器安装的路径
    

    2. goland

    - 创建项目:
    	必须在go/src的文件夹下
    - 配置GOROOT:
    	默认下拉系统会找到,否则手动添加
    
    • index entire GOPATH
    勾选此选项会自动创建出一个GOPATH,一般不用
    
    • 新建文件
    打开项目新建go.file即可
    

    三. Go语言基础

    package main   // 必须指明是哪个包(main包)
    
    import 'fmt'	// 表示导入fmt包  >> 相当于导入包进行使用
    
    func main(){	// 定义了一个main函数
        
        fmt.Println('hello world')	// 打印出hello world
        
    }
    
    • 写go代码,必须把代码放在main包下的main函数中(go程序的入口是main包下的main函数)
    • fmt.Println('hello world') 你看到的a..其实是goland给你提示的,函数的形参是a..
    • go中导入包就必须使用,否则报错(''注释包,自动删除'':是goland做的优化,其他的无)

    1. 注释

    - 单行注释
    	//
    - 多行注释
    	/*    
        多行注释
        */ 
    

    2. 代码执行

    1. goland执行

    右键点击 Run 执行即可 (仅限于goland)
    

    2. 先编译再执行 go build 文件.go

    正统的用法 go build 文件.go

    编译:编译成当前平台的可执行文件 .exe
    	go build 文件.go
    	
    执行:切换到路径下,直接执行文件
    

    3. 编译并执行 go run 文件.go

    相当于2中所有的步骤,但不产生可执行文件(s1.exe不产生)
    

    3. 变量

    • 变量定义必须使用,否则报错
    • 查看变量类型 fmt.Printf()
    • 变量要先定义再使用
    • 变量类型是固定的,不能中途改变(静态语言)
    • 如果只是定义变量,必须指定类型(只能用第一种定义方式)
    • 不能重复定义变量

    定义变量

    1.全定义 var关键字 变量名 变量类型 = 变量值

    var a int = 10
    

    2.类型推导 (自动推导出变量类型)

    var a = 10
    

    3.简略声明(使用较多:=)

    a := 10  // 定义a并赋值10
    

    4.只定义变量,不赋值

    var a int   // int类型的控制 是0
    a = 100
    

    代码

    package main
    func main() {
        a :=10
        fmt.Println(a)
    }
    

    声明多个变量

    第一种:
    	var a,b,c int =10,11,12
    
    第二种:
    	var a,b,c = 10,12,'xxx'
    
    第三种:
    a,b,c := 11,12,'aaa'
    

    重复定义的特殊情况

    var a int
    // var a,b = 10,20  go语法不允许
    a,b := 10,30  //go语法允许
    

    4. 变量类型

    package main
    
    import "fmt"
    
    //类型: 数字,字符串,布尔
    /*
    数字:
    	-int:整数类型(包括负数)
    		-int,int8,int16,int32,int64
    		-int8:表示能存储的长度 8个比特位,8个小格,一个格只能放0和1,
    				能表示的范围是:正的2的七次方-1到,负的2的7次方-1
    		-int16,32...类推
    		-int:在32位机器上,表示int32,在64位机器上表示int64
    		-表示人的年龄:300岁撑死了,int64 是不是有点浪费,可以定义成int8
    		-python中int类型,远远比go的int64大,大很多,python中一切皆对象,int int对象
    
    	-uint:正整数
    		-uint,uint8,uint16,uint32,uint64
    		-uint8:范围:正2的8次方减一,有个0
    	-float:小数
    		-float32,float64
    	-complex:复数(高等数学学得,实部和虚部,了解)
    		-complex32,complex64
    	-byte:uint8的别名,byte:翻译过来是字节,一个字节是多少,8个比特位,uint8就占8个比特位
    	-rune:int32的别名,4个字节,表示一个字符
    
    字符串
    	string:用双引号表示的(单引号?表示的不是字符串,三引号?)
    		双引号和三引号
    布尔:
    	bool:true,false(都是小写)
    */
    

    数字

    -int:整数类型
    	-int,int8,int16,int32,int64
    	-int8:表示能存储长度 8个比特位,
    
    -uint:正整数
    
    -float:小数类型
    
    -complex:复数类型(高等数学学的,实部与虚部,了解)
    
    -byte: uint8的别名
    -rune: int32的别名
    

    字符串 string

    使用双引号

    var a string = "my name is dab" 
    

    反引号:就是python中的三引号,可以换行

    var a string=`这是第一行
    第二行
    结束`
    
    

    go 中代码跟格式没关系

    布尔 bool

    var a bool=true
    

    5. 常量const

    恒定不变的量,只赋值一次,以后再也不能改了

    const关键字 变量名 变量类型 =值
    	const name string="jack"
    	
    类型推导
    	const name ="jack"
    	
    同时定义多个常量
    	const name,age = "jack",16
    

    简历

    - 个人介绍:
    	姓名,性别,学校,专业,工作经验(至少先写两年)
    
    - 个人技能:
    	django,python,redis,go
    
    - 项目经验:
    	代码发布系统:干啥用的,功能,技能点,技术栈
    	
    - 自我评价:
    	在工作中,公司组织
    
  • 相关阅读:
    推荐几个不错的console调试技巧
    JS字符串截取函数slice(),substring(),substr()的区别
    ES6入门基础
    setTimeout的小尴尬
    Javascript自定义事件功能与用法实例分析
    JavaScript中函数定义的三种方法
    数组方法
    数组选择排序
    数组冒泡排序
    this指向问题(1)
  • 原文地址:https://www.cnblogs.com/fwzzz/p/12734328.html
Copyright © 2020-2023  润新知