go语言基础----day01(Go语言介绍,Go开发环境,第一个helloworld,变量命名规范,变量的定义和使用)
面试
# 掌握基本库
# 对面向对象有一定的了解
# flask是自学的
# 物业管理,装饰公司,移动端
# 第三方云产品
# celery定时延时
# docker
昨日回顾
# 1 python 操作redis哨兵
# 2 python 操作redis集群
# 3 mysql 主从搭建
-两台机器,mysql版本一定要一样,server-id 不能一样
-主库开启binlog,从库开启
-主库创建一个用户,授予所有权限,binlog日志位置
-从库
# 4 django多数据库(读写分离,分库分表:数据库中间件)
-1 配置文件中 配置多数据库
-2 视图函数中,手动使用数据库 using('db1')
-3 自动读写分离:写一个py文件,文件中有个类,db_for_read,db_for_write
-4 只要是读操作,就会触发db_for_read,只要是写,改的操作,就会触发db_for_write
.
.
.
.
今日内容
1 Go语言介绍
# Go语言介绍
Go 即Golang,是Google公司2009年11月正式对外公开的一门编程语言
Go是:静态 强类型的 编译型语言
(静态:变量类型固定 强类型:不同类型不允许直接运算)
----------------------------------
解释型语言---源代码由解释器对代码进行解释执行
编译型语言---源代码编译生成机器语言,然后由机器直接执行机器码即可执行
----------------------------------
# 编译型:
c,java,c++,c#,go 编译成可执行文件---》在操作系统上运行,不需要装任何东西
# 解释型:
python,nodejs(后端语言 js只能运行在浏览器里),php
# java:
java有编译过程-----没有编译成机器语言---编译成字节码文件---java虚拟机:jvm能识别
运行java必须要有jvm
jvm:java虚拟机
jre:java运行时环境
jdk:java开发环境
-----------------------------------
# python解释型:python---》可执行文件----》python代码可以借助于pipinstaller模块编译成可执行文件
参见博客 https://zhuanlan.zhihu.com/p/430490285
-----------------------------------
# python动态强类型
-----------------------------------
# 二 Go语言特性 go是用c写的
-跨平台 编译型语言
-语法接近C语言
-管道(channel),切片(slice),并发(routine)
-有垃圾回收的机制
-支持面向对象和面向过程的编程模式
-----------------------------------
# Go语言发展
2015年8月19日 go1.5 实现的架构变化,同时保留了和旧版本的兼容性
本次更新中移除了”最后残余的C代码”---》以后再写go不用c写了,用go写
2018年8月24日 go1.11 —— modules和WebAssembly支持 go mod模式 包管理
最新 1.20版
-----------------------------------
# Go语言应用
k8s:go写的
docker:go写的
七牛:上海的-ceo-许式伟-----写了一个go+
#应用领域
服务开发、并发、分布式、微服务等方向,自动化运维,区块链
服务端开发
分布式系统,微服务
网络编程
区块链开发
内存KV数据库,例如boltDB、levelDB
云平台
-----------------------------------
# Go语言发展前景
Go语言将登上语言榜前列,与C和Java并列前三甲
Go语言称霸云计算
Go将统治下一个10年
目前Go语言已经⼴泛应用于人工智能、云计算开发、容器虚拟化、⼤数据开发、数据分析及科学计算、运维开发、爬虫开发、游戏开发等领域。
Go语言简单易学,天生支持并发,完美契合当下高并发的互联网生态
-----------------------------------
.
.
.
.
.
.
.
.
.
2 Go开发环境搭建
# go的sdk---go的开发环境 go1.20.3.windows-amd64.msi
# go编辑器---goland(jetbrains系列全家桶),vscode---》goland-2020.2.4.exe
go1.20.3.windows-amd64.msi # 右键安装,装到D盘 D:\Program Files\Go\bin路径自动加到环境变量了
goland-2020.2.4.exe # 编辑器也装到D盘
.
.
.
goland激活 打开文件夹 按照步骤操作即可
.
.
.
.
.
.
3 第一个helloworld
# 创建项目
# 创建一个go文件
# 写代码
.
.
.
.
package main
// 声明这个go文件属于哪个包,main有特殊含义,一个项目要运行必须要有main包,
// 项目运行的入口是main包下的 main函数
// 表示导入fmt包,自动导入的,goland自动导入的,使用了哪个包,编辑器会自动导入
// 包导入,不使用,会报错,编译不过
import "fmt"
// func 定义函数函数的关键字 ,main是函数名,必须没有参数,没有返回值,整个项目入口
func main() {
// 在控制台输出helloworld
fmt.Println("helloworld") // a... 是编辑器提示的,意思是传helloworld实参,给了行参a
}
--------------------------
// 编译代码---》编译成可执行文件---》默认编译成当前平台可执行文件
// 支持跨平台编译---》想编译出linux的---》需要交叉编译
--------------------------
//编译 go build 文件名 比如 go build s1.go-----------编译成可执行文件
// 运行可执行文件 ./s1.exe
// 把可执行文件拖到桌面上双击也能直接运行
--------------------------
// 开发阶段----》编译并运行 go run s1.go ---》生成可执行文件,不再当前路径,用完就删除
// 编辑器有个快捷运行方式,右键运行
--------------------------
要把终端的powershell改成cmd的terminal
.
.
.
.
.
.
.
4 变量命名规范
// Go语言中的函数名、变量名、常量名、类型名和包名等所有的命名,都遵循一个简单的命名规则:
1 一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线
2 大写字母和小写字母是不同的:Name和name是两个不同的变量(区分大小写,但是go的大写有特殊含义)
3 关键字和保留字都不建议用作变量名
-----------------------------------------
// 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
-----------------------------------------
// 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文件的命名:建议用下划线
// python 定义变量建议用下划线
// java 都是驼峰
------------------------------------------
.
.
.
.
.
.
5 变量的定义和使用
package main
import "fmt"
// 变量定义
func main() {
// 1 完整定义 var 变量名 变量类型 = 变量值
// 变量定义了,必须使用,否则报错
var name string = "lqz"
fmt.Println(name)
var age int = 19
fmt.Println(age)
// 2 类型推导 不写类型---会自动推导出属于什么类型
// 虽然是类型推导出来的,但变量在开始定义的时候类型就已经定下来了,并且后期不能变换类型
// 变量只要定义了,类型就固定了。后期不能改变
var name1 = "lqz"
name1 = "hhh"
// name1 = 19 会报错
fmt.Println(name1)
// 3 简略声明 省略var 省略类型,必须使用 :=
// 简略声明用的多
name2 := "lqz"
fmt.Println(name)
-------------------------
// 6 一次性声明多个变量(其实就是基于上面三种变量定义方式的变形)
// 6.1 完整定义
var name3, age3, hobby3 string = "lqz", "19", "篮球"
var (
name3 string = "lqz"
age3 int = 19
hobby3 string = "篮球"
)
fmt.Println(name)
fmt.Println(age)
fmt.Println(hobby)
// 6.2 类型推导
var name4, age4, hobby4 = "lqz", 19, "篮球"
var(
name4="lqz"
age4=19
hobby4="篮球"
)
fmt.Println(name)
fmt.Println(age)
fmt.Println(hobby)
// 6.3 简略声明
name5, age5, hobby5 := "lqz", 19, "篮球"
fmt.Println(name5)
fmt.Println(age5)
fmt.Println(hobby5)
// 6.4 混合
var(
name6="lqz"
age6 int=19
hobby6="篮球"
)
fmt.Println(name6)
fmt.Println(age6)
fmt.Println(hobby6)
-------------------------
// go语言 变量定义是定义 修改是修改是两个操作 和python不一样
// 7 变量不能重复定义!!!
var name7 = "lqz"
var name7 string="pyy" // 这样不行
name7 := "pyy" // 这样也不行
name7, age7 := "pyy", 19 // 这种情况特殊不报错 age7前面没定义 这就不报错 有点奇怪 忽略掉
fmt.Println(name)
fmt.Println(age)
// 8 变量可以先定义再赋值,但必须使用完整定义(方式一)
var name8 string // 默认值是 空字符串
var age8 int // 默认值是 0
var age8 // 错 不行
name8 := // 错 不行
age8 = 19
name8 = "lqz"
fmt.Println(name)
fmt.Println(age)
-------------------
// 9 查看变量类型
//a := 99
a := "lqz"
fmt.Printf("a的值是:%v, 类型是:%T", a, a)
}
.
.
.
.
.
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY