###### GO介绍#####
# Go 即Golang,是Google公司2009年11月正式对外公开的一门编程语言
# Go是静态强类型语言,是区别于解析型语言的编译型语言(静态:是否需要编译 强类型:不同类型不允许直接运算)。
# python 是动态强类型:不需要编译,不同类型不允许直接运算
# js 动态弱类型
解析型语言——源代码是先翻译为中间代码,然后由解析器对代码进行解释执行。
编译型语言——源代码编译生成机器语言,然后由机器直接执行机器码即可执行。
# 跨平台的编译型语言:交叉编译
##### 常见编程语言比较#########
-编译型:
-java:
-jdk:java集成开发环境---》java开发需要用它---》好多公司运行java,也装
-jre:java 运行环境,java程序运行,需要装
-jvm:java虚拟机,java--》源代码---》字节码--》运行在jvm上
-java源代码---》编译后---》不是可执行文件---》字节码文件,jar,war包---》运行在jvm上
-编译型语言--》跟传统编译型语言有区别
-sun公司---》甲骨文--》oracle
-mysql免费开源软件---》oracle投资了,买了它
-安卓开发需要java---》
-go:编译后--->直接是可执行文件--->交叉编译--》跨平台编译
----------以下都是 需要在不同平台编译-----------
-c
-C++
-C#
-解释型:---》无论开发还是运行---》都需要解释器
-python:pipinstaller:https://zhuanlan.zhihu.com/p/430490285
-php
-nodejs
-。。。
# 如何保证python代码安全
-1 打包成可执行文件 部署
-2 把源码做到docker中
-3 项目运行起来,源代码删除
# go 发展历史
2009年11月7日 weekly.2009-11-06 —— 早期的版本
2012年3月28日 go1 —— 稳定版版的发布
2015年8月19日 go1.5 —— 实现的架构变化,同时保留了和旧版本的兼容性,本次更新中移除了”最后残余的C代码”。---》编程语言自举
2020 年 2 月 go 1.14— — 现在 Go Module
-包管理
# Go语言简单易学,天生支持并发,完美契合当下高并发的互联网生态
开发环境搭建
装俩东西
- go sdk:https://golang.google.cn/dl/
-1.22.1 版本
-一路下一步--》装好---》不需要配置环境变量
-打开cmd
-输入 go version
-IDE集成开发工具
-Goland:
-vscode
第一个helloworld
# 使用goland创建项目
-go.mod # 等同于 package.json, requirements.txt pom.xml
// 声明当前文件属于哪个包,改成main 包
// 1 重点:go程序要运行,必须有个main包,入口是main函数
package main
// 2 导入fmt包---》打印函数在这个包下
import "fmt"
// 3 函数
func main() {
// 4 打印hello world
fmt.Println("hello world")
}
// 5 运行项目几种方式
/*
1 go build go文件---》成可执行文件---》运行可执行文件
2 右键---》运行
3 main函数上点 绿色箭头
4 使用命令:go run demo01.go 编译并运行
*/
命名规范
# 一 变量定义规范
Go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则:
# 1 以一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线
# 2 大写字母和小写字母是不同的:Name和name是两个不同的变量
# 3 关键字和保留字都不建议用作变量名
# 二 关键字
Go语言中关键字有25个;关键字不能用于自定义名字,只能在特定语法结构中使用。
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
# 三 保留字
go语言中有37个保留字,主要对应内建的常量、类型和函数
内建常量: true false iota nil
内建类型: int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
内建函数: make len cap new append copy close delete
complex real imag
panic recover
# 四 注意
-这些保留字并不是关键字,可以在定义中重新使用它们。在一些特殊的场景中重新定义它们也是有意义的,但是也要注意避免过度而引起语义混乱
-变量定义使用驼峰
go:AgeOfPerson
python:age_of_person
java:驼峰
-go 文件名
-python :下划线
-go:下划线
-java:驼峰