GO语言入门
GO介绍
1.是一门谷歌公司2009年对外公开的编程语言
市面上有很多著名软件都是用GO写的
比如:k8s 、 docker、 七牛
2.是静态,强类型,运行过程中变量类型一旦确定,无法改变
如果需要将一个变量的类型转换为另一种类型,必须显式地进行类型转换
比如:
var x int = 42
var y float64 = float64(x)
Ps :python是动态 弱类型语言
3.此外,GO也是一编译型语言,编译成可执行文件后可以在操作系统上直接运行,无需安装任何东西
4.有垃圾回收机制
5.支持面向对象和面向过程的编程模式
6.应用领域
服务开发、并发、分布式、微服务等方向,自动化运维,区块链
服务端开发
分布式系统,微服务
网络编程
区块链开发
内存KV数据库,例如boltDB、levelDB
云平台
Go的使用
1.环境搭建
下好go的sdk ==>>开发环境
https://golang.google.cn/dl/
windows64位 go1.20.3.windows-amd64.msi
下一个编辑器即可 ==>> goland
2.简单使用
1.创建一个项目,记得匹配好sdk
2.创建一个.go文件
3.敲写代码
package main //申明go语言属于哪个包
import "fmt" //自动带入的包
// func 定义一个函数 ,main 是函数名,没有参数,没有返回值,整个项目入口
func main() {
// 在控制台输出helloworld
fmt.Println("helloworld") // a... 提示的,意思是传的helloworld实参,给了a
}
// 编译代码---》编译成可执行文件---》默认编译成当前平台可执行文件---》支持跨平台编译---》想编译出linux的---》交叉编译
// 编译代码---》编译成可执行文件---》默认编译成当前平台可执行文件---》支持跨平台编译---》想编译出linux的---》交叉编译
//编译 go build 文件名----》编译成可执行文件
// 运行,直接运行 双击
// 开发阶段----》编译并运行---》生成可执行文件,不再当前路径,用完就删除
// 编辑器有个快捷运行方式,右键运行
3.变量命名规范
// 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 都是驼峰
Go中变量的定义和使用
注意,GO的变量,定义就必须用,2333,不用不行
第一种:
var + 变量名 + 变量类型 = 值
第二种:自动推导出类型
var + 变量名 = 值
第三种:关键符号‘:=’
变量名:= 值
第四种:一次性声明多个
1.完整定义
var a,b,c + 变量类型 = 值1,值2,值3
var (
变量名 + 变量类型 = 值
变量名 + 变量类型 = 值
)
2.类型推导
省略类型而已,就不写了
3.简略声明 省var
name, age, hobby := "lqz", 19, "篮球"
4.常用
var(
a = xx
b = yy
c = zz
)
==========================
变量不能重复定义,但是当和一个没定义过的变量一起定义又可以,不报错
name := "jack"
name,age:="rose",24 #这是ok的
我们也可以先定义,后赋值,但是必须按指定类型的那种定义,不能省
var name string
name = "jack"
fmt.Println(name)
查看变量类型
%T查看
a := 9999
fmt.Printf("a的值是:%v,类型是%T", a, a)
注意
1.Go 的字符串是" " !!!!!!!!!!!!
拓展
1.python代码仿泄露方案
-方案一:启动起来,把源代码删除
-方案二:pipinstaller 打包成可执行文件
-方案三:做到docker镜像中---》运行容器---》-e password=授权码
2.none是对象类型,指针类型的空值,Python一切皆对象,所以可以和none比较
但是go不行,字符串的空值是'',数字类型的空值是 0
在go中对象类型,也就是指针类型的空值是nil
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现