Go语言简介

2023-11-13

一、Go编程语言概述

Go语言也叫Golang,是由谷歌(Google)公司在2007年推出的一款静态编译型语言。主要将其用于服务端开发、并发编程和网络编 程等。

1.1 Go语言特性及应用场景

1.容易上手
2.编程速度快
3.原生支持并发
Go语言最主要的特性就是从语言层面原生支持并发,无须任何第三方库。Go的并发基于
goroutine,可以理解为一种微线程。与Python的多线程性能限制于GIL全局锁不同,Go语言的并发
可以充分利用CPU的资源,将goroutine合理地分配到每个CPU中,最大限度地使用CPU的性能。
goroutine之间的通信可以使用Go语言的sync包和channel机制来实现。
4.垃圾回收
5.代码风格清晰

1.2使用Go语言的项目

1.docker
网址:https://github.com/docker/docker-ce
Docker是一个开源的应用容器引擎,基于Go语言开发并遵从Apache 2.0协议开源。Docker可以
让开发者打包他们的应用和依赖包到一个轻量级、可移植的容器中,也可以实现虚拟化,更重要
的是容器性能开销极低。
2.Kubernetes
网址:https://github.com/kubernetes/kubernetes
Kubernetes是自动化容器操作的开源平台,使用Kubernetes可以进行自动化容器的部署和复
制、随时扩展或收缩容器规模和容器间的负载均衡等。
3.Beego项目
网址:https://github.com/astaxie/beego
Beego是一个使用Go编写的极轻量级、高可伸缩性和高性能的Web应用框架。
4.Golang项目
网址:https://github.com/golang/go
Go语言自1.5版本后,可以完全使用Go语言自身来实现。对Go语言的源码研究有助于深入理解
Go的底层实现,想对Go语言有持续深入了解的读者可阅读此项目。
5.Codis项目
网址:https://github.com/CodisLabs/codis
Codis是一个国产开源的分布式redis解决方案,对于上层的应用透明,就像连接到原生的redis
服务器那样。

1.3常用软件和网站

1.开发工具(IDE或编辑器)
Go开发工具有许多,其中IDE(Integrated Development Environment,集成开发环境)功能比 较强大,会提供代码提示、文件和目录管理、代码搜索和替换、查找函数等功能。一 般会通过IDE进行代码开发。
Visual Studio Code,是一个由微软开发的,同时支持Windows、Linux和Mac OS操作系统并且开 放源代码的文本编辑器。它支持调试,并内置了Git版本控制功能,同时也具有开发环境功能,例 如代码补全、代码片段、代码重构等。该编辑器支持用户自定义配置,例如改变主题颜色、键盘 快捷方式、编辑器属性和其他参数,还支持扩展程序并在编辑器中内置了扩展程序管理的功能。
GoLand是JetBrains推出的一款新型商用IDE,旨在为Go开发提供符合人体工程学的环境。新的 IDE扩展了IntelliJ平台,提供Go语言特有的编码辅助和工具集成,强大的静态代码分析和人体工程 学设计使开发更高效。
2.代码管理工具

开发人员通过代码管理工具进行权限控制,能防止代码混 乱,提高安全性,防止一些不必要的损失和麻烦。

SVN(Subversion)是一个开源的集中式版本控制系统,管理随时间改变的数据,所有数据集 中存放在中央仓库(repository)。repository就好比一个普通的文件服务器,不过它会记住每一次文 件的变动,这样你就可以把Java文件恢复成旧的版本,或是浏览Java文件的变动历史。
GIT,是一个开源的分布式版本控制系统,和SVN功能类似,但GIT的每台电脑都相当于一个 服务器,代码是最新的,比较灵活,可以有效、高速地处理项目版本管理。全球最大的代码托管 平台GitHub网站,采用的也是GIT技术
3.其他工具

Jira,是Atlassian公司出品的项目与事务跟踪工具,可以进行网站bug管理、缺陷跟踪、任务跟 踪和敏捷管理等.

Redmine,是由Ruby编程语言开发的一套跨平台项目管理系统,通过“项目(Project)”的形 式把成员、任务(问题)、文档、讨论以及各种形式的资源组织在一起,让大家参与更新任务、 文档等内容来推动项目的进度,同时利用时间线索和各种动态的报表形式来自动给成员汇报项目 进度,并提供Wiki、新闻台等,还可以集成其他版本管理系统和bug跟踪系统.

XMind,是一款实用的思维导图软件,可以用来绘制产品架构图、项目流程图、功能分解图 等。XMind简单易用、界面美观、功能强大,拥有高效的可视化思维模式,具备可扩展、跨平台、 稳定性强等性能,真正帮助用户提高生产率,促进有效沟通及协作。

TeamCola,是由国内团队开发的时间管理工具,能较好地解决时间问题,而其管理颗粒度为 半小时,也不会过多增加管理成本

4.网站资源
CSDN:创立于1999年,是中国最大的IT社区和服务平台。
网址:https://www.csdn.net/
Go官方文档
网址:https://golang.org/doc/
Go语言官方包索引与搜索引擎
网址:https://godoc.org/
Stack Overflow:一个与程序相关的IT技术问答网站。用户可以在网站免费提交问题,浏览
问题,索引相关内容。一般情况下,一些在CSDN找不到答案的问题都可以在Stack Overflow
上找到。
网址:https://stackoverflow.com/
GitHub:一个面向开源及私有软件项目的托管平台,目前已被微软收购。可在GitHub上搜
索到开源的Go源代码和第三方库,提交issue或修改有问题的代码。
网址:https://github.com

1.4 总结

Go语言也叫Golang,是由谷歌公司在2007年推出的一款静态编译型语言。Go语言高效、简 洁且容易上手,有高并发和自带垃圾回收的特性。

主要将其用于服务端开发、并发编程和网 络编程等。

Go语言起源于2007年,于2009年正式对外发布。Go语言项目主要由肯·汤普逊、罗布·派 克和罗伯特·格里泽默参与开发。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go语言简介 的相关文章

  • Golang教程:(十六)结构体

    原文 https golangbot com structs 欢迎来到Golang系列教程的第十六篇 什么是结构体 结构体 struct 是用户自定义的类型 它代表若干字段的集合 有些时候将多个数据看做一个整体要比单独使用这些数据更有意义
  • Go的并发的退出

    有时候我们需要通知goroutine停止它正在干的事情 比如一个正在执行计算的web服务 然而它的客户端已经断开了和服务端的连接 Go语言并没有提供在一个goroutine中终止另一个goroutine的方法 由于这样会导致goroutin
  • go-zero使用Etcd进行服务注册代码分析

    代码分析 github com tal tech go zero v1 2 3 core discov publisher go package discov import github com tal tech go zero core
  • Go项目部署及所遇问题

    小聊 本次小白给大家带来Golang项目部署操作以及个人所遇问题和解决它们的方法 依然是一边实操演示一边写文稿 如遇相似问题却存有疑惑可留言 开发环境是Window 部署环境是Linux 开发工具为GoLand 部署服务器为阿里云 1 打包
  • golang sleep

    golang的休眠可以使用time包中的sleep 函数原型为 func Sleep d Duration 其中的Duration定义为 type Duration int64 Duration的单位为 nanosecond 为了便于使用
  • Golang协程与通道整理

    协程goroutine 不由OS调度 而是用户层自行释放CPU 从而在执行体之间切换 Go在底层进行协助实现 涉及系统调用的地方由Go标准库协助释放CPU 总之 不通过OS进行切换 自行切换 系统运行开支大大降低 通道channel 并发编
  • goland环境配置

    goland modules环境配置 下载和安装goland 环境配置 配置环境变量GOPATH 配置go modules GOPROXY代理的系统变量 工程目录中新建三个工作目录 goland中启用go modules 新建一个go程序
  • Go 程序编译过程(基于 Go1.21)

    版本说明 Go 1 21 官方文档 Go 语言官方文档详细阐述了 Go 语言编译器的具体执行过程 Go1 21 版本可以看这个 https github com golang go tree release branch go1 21 sr
  • 掌握 Go 语言中的循环结构:从基础到高级

    一 if else 分支结构 1 if 条件判断基本写法 package main import fmt func main score 65 if score gt 90 fmt Println A else if score gt 75
  • 【go语言开发】loglus日志框架的使用

    本文将简单介绍loglus框架的基本使用 并给出demo 文章目录 前言 Loglus常见用法 自定义日志级别 使用字段钩子 输出到多个位置 使用钩子实现自定义日志处理 demo
  • go-zero 开发入门-加法客服端示例

    定义 RPC 接口文件 接口文件 add proto 的内容如下 syntax proto3 package add 当 protoc gen go 版本大于 1 4 0 时需加上 go package 否则编译报错 unable to d
  • go-zero目录结构和说明

    code of conduct md 行为准则 CONTRIBUTING md 贡献指南 core 框架的核心组件 bloom 布隆过滤器 用于检测一个元素是否在一个集合中 breaker 熔断器 用于防止过多的请求导致系统崩溃 cmdli
  • go-zero开发入门之网关往rpc服务传递数据1

    go zero 的网关往 rpc 服务传递数据时 可以使用 headers 但需要注意前缀规则 否则会发现数据传递不过去 或者对方取不到数据 go zero 的网关对服务的调用使用了第三方库 grpcurl 入口函数为 InvokeRPC
  • “go mod tidy”之错误“not a valid zip file”

    执行 go mod tidy 时 遇到如下错误 rpc imports github com zeromicro go zero zrpc imports github com zeromicro go zero zrpc resolver
  • Go 语言中切片的使用和理解

    切片与数组类似 但更强大和灵活 与数组一样 切片也用于在单个变量中存储相同类型的多个值 然而 与数组不同的是 切片的长度可以根据需要增长和缩小 在 Go 中 有几种创建切片的方法 使用 datatype values 格式 从数组创建切片
  • 【golang】go执行shell命令行的方法( exec.Command )

    所需包 import os exec cmd 的用法 cmd exec Command ls lah ls是命令 后面是参数 e cmd Run 多个参数的要分开传入 如 ip link show bond0 cmd
  • go语言实现文件夹上传前后端代码案例

    go语言实现文件夹上传前后端代码案例 前端用于上传的测试界面 如果上传的文件夹有子文件要遍历子文件夹创建出子文件夹再进行拷贝 需要获取文件名和对应的路径 将文件的相对路径和文件对象添加到FormData中 这几行代码很关键 for let
  • Golang拼接字符串性能对比

    g o l a n g golang g o l an g
  • golang 生成一年的周数

    GetWeekTimeCycleForGBT74082005 获取星期周期 中华人民共和国国家标准 GB T 7408 2005 参数 year 年份 GB T 7408 2005 func GetWeekTimeCycleForGBT74
  • go cannot find package “github.com/gorilla/websocket“解读

    Go无法找到包 github com gorilla websocket 的解决方案 在Go开发过程中 我们经常会依赖第三方库来简化开发工作 而使用 go get 命令安装这些库时 有时候我们可能会遇到类似于以下错误的情况 plaintex

随机推荐

  • 华为模拟器 eNSP V100R003C00SPC100 Setup(全套官方珍藏版)

    华为网络工程师必备套件 现在非华为正式员工 非华为技术人员 非华为合作伙伴员工 非华为ICT学院学员 官方已不提供模拟器的下载安装 为了方便大家的学习 现将自己2019年前 华为官方最后给予下载的软件共享给大家 现在应该算得上是珍藏版了 如
  • TS浅记(基础部分<刚学到泛型,后续看学习进度>)小白自学的一些笔记

    1 TS初见 1 1 为什么要有 TypeScript TypeScript是JavaScript的超集 因为它扩展了JavaScript 有JavaScript没有的东西 硬要以父子类关系来说的话 TypeScript是JavaScrip
  • CSCOPE用法简略笔记

    bin sh find name h o name c o name cc gt cscope files cscope bkq i cscope files my usage cscope q d i cscope files f csc
  • bigdata1234.cn 大数据开发基础课堂测试

    数据容量单位 1 byte 8 bits 1 kilobyte KB 1024 bytes 1 megabyte MB 1024 KB 1 gigabyte GB 1024 MB 1 terabyte TB 1024 GB 1 petaby
  • Topaz Video AI 视频修复工具 安装教程

    Topaz视频增强AI是一款功能强大且易于使用的视频分辨率增强软件 该软件的主要功能是无损放大视频的分辨率 最高可达8K分辨率 它可以将您的所有低分辨率视频转换为8K分辨率的高质量视频 还支持批处理 安装教程 Topaz Video AI
  • 在页面中调用搜索引擎

    今天突然想到 在自己的页面中调用google 百度这样强大的搜索引擎想必很酷 于是上网查了资料 没想到就几行代码的事 下面是调用百度的一个代码段 div div
  • Jar包开机自启

    Jar包开机自启 1 编辑需要启动的脚本 vi run sh bin bash nohup java jar Xmx2024m XX MaxNewSize 256m home test 1 0 SNAPSHOT jar spring con
  • YOLOv8详解 【网络结构+代码+实操】

    文章目录 YOLOv8 概述 模型结构 Loss 计算 训练数据增强 训练策略 模型推理过程 网络模型解析 卷积神经单元 model py Yolov8实操 快速入门 环境配置 数据集准备 模型的训练 验证 预测 导出 使用CLI 使用py
  • 微信开发者工具调试大法

    由于小程序的火爆 于是去开源中国接了个私活 开发一个小程序 于是开始学习微信小程序开发文档 下载微信开发者工具 进行开发了 开发过程中需要调试 开始只是打日志或者断言 觉得很不方便 希望跟IDEA一样的调试器 于是摸索如下 第一步 打断点
  • 异步系统级错误处理

  • IDEA远程调试程序

    一 服务端 本次实验服务端配置 Tomcat Apache Tomcat 8 5 32 查看命令 sh Tomcat安装目录 bin version sh JVM 1 8 0 131 b11 jdk 8 System 3 10 0 693
  • range的用法,pycharm的快捷键格式对其,和多变量赋值在一行

    python range 函数可创建一个整数列表 一般用在 for 循环中 range start stop step start 计数从 start 开始 默认是从 0 开始 例如range 5 等价于range 0 5 stop 计数到
  • 上周AI热点回顾:AI“模拟”出暗物质、AI挖掘毕加索秘密、CPU在大型神经网络超越V100 GPU...

    01 全球首个AI宇宙模拟器跑出了暗物质 Space Engine是一款宇宙模拟游戏 它包含数千个真实的天体 包括来自HIP目录的恒星 来自NGC和IC目录的星系 几个知名的星云 以及所有已知的系外行星和它们的恒星 它采用星表与程序化生成创
  • Mac 环境现有项目集成 RN环境

    开发环境 mac rn版本 0 62 2 xcode版本 11 6 一 集成cocopods 参考文档 https www jianshu com p 6d51362b7e64 1 查看当前Ruby版本 ruby v 2 升级Ruby环境
  • 48-输入和显示-进度条控件QProgressBar

    进度条控件QProgressBar 进度条控件QProgressBar 通常用来显示一项任务完成的进度例如复制文件导出数据的进度 进度条QProgressBar是从QWidget 继承而来的 用QProgressBar类创建实例对象的方法如
  • [python] 安装numpy+scipy+matlotlib+scikit-learn及问题解决

    这篇文章主要讲述Python如何安装Numpy Scipy Matlotlib Scikit learn等库的过程及遇到的问题解决方法 最近安装这个真是一把泪啊 各种不兼容问题和报错 希望文章对你有所帮助吧 你可能遇到的问题包括 Impor
  • android父元素,Android之布局

    LinearLayout 线性布局 线性布局 最常用的布局之一 所有包含在线性布局里的控件在线性方向上依次排列 注意 线性布局不会换行 当组件一个挨着一个地排列到头之后 剩下的组件将不会被显示出来 1 方向 在线性布局里面的控件 是按照线性
  • vue axios解决文件流下载乱码

    前端请求头 responseType blob 一定要加 是单独一个对象 不能放在请求参数里面 new Blob res type application vnd ms excel charset utf 8 一定要设置类型 和后端resp
  • JDK、JRE、JVM三者间的关系

    JDK Java Development Kit 是针对Java开发员的产品 是整个Java的核心 包括了Java运行环境JRE Java工具和Java基础类库 Java Runtime Environment JRE 是运行JAVA程序所
  • Go语言简介

    一 Go编程语言概述 Go语言也叫Golang 是由谷歌 Google 公司在2007年推出的一款静态编译型语言 主要将其用于服务端开发 并发编程和网络编 程等 1 1 Go语言特性及应用场景 1 容易上手 2 编程速度快 3 原生支持并发