GO临时笔记
编译型语言和解释型语言的区别
解释型 依赖虚拟机转换为可以执行的机器代码
编译型,少了转换步骤
诞生时机
诞生之初就考虑到了多核 cpu的情况。
其他语言诞生就没有多核,通过后期加语法框架支持
特点
G0语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容Go语言:G0=c+Python,说明Go语言既有c静态语言程序的运行速度,又能达到Python动态语言的快速开发。
1.从C语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等等,也保留了和c语言一样的编译执行方式及弱化的指针。
2.引入包的概念,用于组织程序结构,G0语言的一个文件都要归属于一个包,而不能单独存在
3.垃圾回收机制,内存自动回收,不需开发人员管理
4.天然并发
(1)从语言层面支持并发,实现简单
(2)goroutine,轻量级线程,
可实现大并发处理,高效利用多核。
(3)基于CPs并发模型(Communicating Sequential Processes)实现
5.吸收了管道通信机制,形成Go语言特有的管道channel
通过管道channel,可以实现不同的goroute;之间的相互通信
6.函数支持返回多值
7.新的创新,切片、延迟执行defer等
执行流程
区别
说明:两种执行流程的方式区别
1.如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行
2.如果我们是直接go run源代码,那么如果要在另外一个机器上这么运行,也需要go开发环境,否则无法执行。
3.在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件变大了很多。
GO安装
方式一
方式二
1 | brew install go@1.6 |
go语言项目结构
网站域名对应的是项目
helloword
注意 main入口的package也需要是main
package main import "fmt" func main() { fmt.Println("Hello world") }
go常用命令
编译
go build
直接执行go文件
go run main.go
go install
安装并拷贝到gopath的bin目录下
go install
跨平台编译
如mac编译windos 二进制执行文件 windows编译mac 或者linux下运行的二进制文件
如:mac 编译windows和linux
env GOOS=windows GOARCH=amd64 go build -o output.exe env GOOS=linux GOARCH=amd64 go build -o output
go基本语法
变量申明
变量申明必须使用
#单个申明 var name string; var age int; var isOk bool; #批量申明 var( name string; age int; isOk bool; ) #类型推导 var name="小明"; #简短变量声明 仅能在函数中使用 age :=20
常量
#单个申明 修改后不能改变 const pi=3.1415; #批量申明 const( p1=1 p2=2 ) const( p1=1 #下面的值跟他保持一致 p2 p3 ) #iota const没增加一个什么将 累加一次 在const出现时会重置未0 const( a1=iota #1 a2 #2 a3 #3 )
拉取依赖
go mod tidy 是一个 Go 语言命令,用于整理和更新项目的模块依赖关系。它会根据项目中的 go.mod 文件,自动删除未使用的依赖包,并添加缺失的依赖包。这个命令可以帮助保持项目的依赖关系清晰和更新。
idea运行main方法参数设置
server -c configs/config.yaml
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!