【GoLang】Golang 快速入门(第一篇)

目录

1.简介:

2.设计初衷:

3.Go语言的 特点

4.应用领域:

5.用go语言的公司:

6. 开发工具介绍以及环境搭建

1.工具介绍:

2.VSCode的安装:

3.安装过程:

4.Windows下搭建Go开发环境--安装和配置SDK

1.搭建Go开发环境 - 安装和配置SDK

2.SDK下载

3.安装SDK

4.配置环境变量

5.再次验证path是否好用:(注意:控制命令台需要重启)


1.简介:

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种计算机编程语言语言。

2.设计初衷:

Go语言是谷歌推出的一种的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。派克表示,和今天的C++或C一样,Go是一种系统语言。他解释道,"使用它可以进行快速开发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常有用和强大。"

1) 计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。 2) 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。 3) 企业运行维护很多c/c++的项目,c/c++程序运行速度虽然很快,但是编译速度确很慢,同时还存在内存泄漏的一系列的困扰需要解决。

解释性语言和编译性语言的区别主要在于代码的执行方式不同。Java是一种解释性语言,它需要Java虚拟机(JVM)来解释和执行程序。当你编写Java程序时,代码会被编译成字节码,这是一种中间代码。然后,当你运行Java程序时,JVM会读取字节码并将其转换为机器语言。这个过程是即时编译(Just-In-Time Compilation,JIT)的,意味着代码在运行时才会被编译。

相比之下,C++是一种编译性语言,它需要一个编译器将源代码编译成可执行文件。这个编译过程通常会将源代码翻译成汇编语言,然后再将汇编代码翻译成机器语言。由于编译器可以在编译期间对代码进行优化,因此C++程序的执行速度通常比Java程序快。

3.Go语言的 特点

高效性:Go语言是一种编译型语言,能够生成高效的机器码。同时,Go语言的垃圾回收机制和协程支持使其在处理大规模并发任务时非常高效。

并发性:Go语言内置支持协程和通道,能够方便地编写并发程序。协程可以轻松实现高并发,通道可以方便地进行通信和同步,这使得Go语言在网络编程、分布式系统和大数据处理等领域具有优势。

简单性:Go语言语法简洁,容易学习和理解。Go语言没有继承和多态等复杂的语言特性,使得程序设计更加直观和简单。

可读性:Go语言具有良好的代码风格和格式,使得代码易于阅读和维护。Go语言的代码组织方式和注释规范使得代码的可读性和可维护性得到保证。

安全性:Go语言具有内置的安全特性,如内存安全、类型安全和并发安全等。Go语言的垃圾回收机制可以避免内存泄露,类型安全可以防止代码中出现类型错误,而并发安全可以避免数据竞争问题。

跨平台性:Go语言的编译器可以将源代码编译为本地机器码,使得程序可以在各种操作系统上运行。同时,Go语言标准库中提供了许多与平台无关的包,如网络、文件操作等,可以方便地编写跨平台的程序。

总之、Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,具有高效性、并发性、简单性、可读性、安全性和跨平台性等优势,使得它在云计算、网络编程、分布式系统、大数据处理等领域得到了广泛应用。

4.应用领域:

区块链应用

区块链技术,简称BT(Blockchain technology),也被称之为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可以参与数据库记录

后端服务器应用

支撑主站后台流量(排序、推荐、搜索等),提供负载均衡,cache,容错,按条件分流,统计运行指标

云计算/云服务后台应用

盛大云CDN(内容分发网络)

应用范围:CDN的调度系统,分发系统、监控系统、短域名服务,CDN内部开放平台、运营报表系统以及其他一些小工具等

5.用go语言的公司:

1、Google 这个不用多做介绍,作为开发Go语言的公司,当仁不让。Google基于Go有很多优秀的项目,比如:GitHub - kubernetes/kubernetes: Production-Grade Container Scheduling and Management ,大家也可以在Github上 Google · GitHub 查看更多Google的Go开源项目。

2、Facebook Facebook也在用,为此他们还专门在Github上建立了一个开源组织facebookgo,大家可以通过Meta Go · GitHub访问查看facebook开源的项目,比如著名的是平滑升级的grace。 3、腾讯 腾讯作为国内的大公司,还是敢于尝试的,尤其是Docker容器化这一块,他们在15年已经做了docker万台规模的实践,具体可以参考腾讯万台规模的Docker应用实践_QCon_小盖_InfoQ精选文章 。 主要职责是: 负责腾讯游戏蓝鲸平台后台开发工作 负责容器相关的开发工作 和蓝鲸平台,容器开发有关。腾讯作为主要使用C/C++的公司,使用Go会方便很多,也有很多优势,不过日积月累的C/C++代码很难改造,也不敢动,所以新业务会在Go方面尝试。

4、百度 目前所知的百度的使用是在运维这边,是百度运维的一个BFE项目,负责前端流量的接入。他们的负责人在2016年有分享,大家可以看下这个 InfoQ - 促进软件开发及相关领域知识与创新的传播-极客邦 . 其次就是百度的消息系统,从其最近的Golang招聘介绍就可以看出来. 负责公司手百消息通讯系统服务器端开发及维护

5、京东 京东云消息推送系统、云存储,以及京东商城等都有使用Go做开发。

6、小米 小米对Golang的支持,莫过于运维监控系统的开源,也就是 http://open-falcon.com/ 。 此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用Golang。

7、360 360对Golang的使用也不少,一个是开源的日志搜索系统Poseidon,托管在Github上,GitHub - Qihoo360/poseidon: A search engine which can hold 100 trillion lines of log data.. 还有360的推送团队也在使用,他们还写了篇博文在Golang的官方博客上 https://blog.golang.org/qihoo。

360直播在招聘Golang开发工程师。

美团、滴滴、新浪、阿里、京东以及七牛等。一般的选择,都是选择用于自己公司合适的产品系统来做,比如消息推送的、监控的、容器的等,Golang特别适合做网络并发的服务,这是他的强项,所以也是被优先用于这些项目。

6. 开发工具介绍以及环境搭建

1.工具介绍:

1) visual studio code, Microsoft产品(简称VSCode):一个运行于Mac Os、Windows和Linux 之上的,默认提供Go语言的语法高亮,安装Go语言插件,还可以支持智能提示,编译运行等功能。 2) Sublime Text,可以免费使用,默认也支持Go代码语法高亮,只是保存次数达到一定数量之后就会提示是否购买,点击取消继续用,和正式注册版本没有任何区别 3) Vim: Vim是从vi发展出来的一个文本编辑器,代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用 4) Emacs : Emacs传说中的神器,她不仅仅是一个编辑器,因为功能强大,可称它为集成开发环境 5) Eclipse IDE工具,开源免费,并提供GoEclipse插件 6) LitelDE,LitelDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),是中国人开发的。 7) JetBrains公司的产品:PhpStrom、WebStrom和PyCharm等IDE工具,都需要安装Go插件。

2.VSCode的安装:

下载vscode安装软件 Download Visual Studio Code - Mac, Linux, Windows

3.安装过程:

略(正常安装即可)

4.Windows下搭建Go开发环境--安装和配置SDK

1.搭建Go开发环境 - 安装和配置SDK

基本介绍: 1) SDK的全称(Software Development Kit 软件开发工具包) 2) SDK是提供给开发人员使用的,其中包含了对应开发语言的工具包。

2.SDK下载

1) Go语言的官网为: golang.org ,无法访问,需要翻墙。 2) SDK下载地址 : Golang中文社区:Go下载 - Go语言中文网 - Golang中文社区 (1.15.6版本)

3.安装SDK

请注意:安装路径不要有中文或者特殊符号如空格等 SDK安装目录建议:一般我安装在d:/golang_sdk安装时 , 基本上是傻瓜式安装,解压就可以使用

4.配置环境变量

在命令提示符上输入go env查看环境变量 可以通过以下命令更改也可以通过环境变量直接更改

go env -w GO111MODULE=off(先设置on,当更新完gopls这个插件(可以智能提示)后,再重新设置为off(否则只在goroot 查找包路径))

go env -w GOPRIVATE=git.mycompany.com,github.com/my/private

go env -w GOPROXY = https://goproxy.io,direct

go env -w GOROOT=go SDK的安装目录

go env -w GOPATH=存放go代码的路径

注意:记得删除用户变量的gopath

GOPROXY这个环境变量主要是用于设置 Go 模块代理(Go module proxy),其作用是用于使 Go 在后续拉取模块版本时能够脱离传统的 VCS 方式,直接通过镜像站点来快速拉取。

GOPROXY 的默认值是: https://proxy.golang.org,direct,由于某些原因国内无法正常访问该地址,所以我们通常需要配置一个可访问的地址。目前社区使用比较多的有两个 Goproxy.cn和 GOPROXY.IO - A Global Proxy for Go Modules,当然如果你的公司有提供GOPROXY地址那么就直接使用

GOPROXY 允许设置多个代理地址,多个地址之间需使用英文逗号 “,” 分隔。最后的 “direct” 是一个特殊指示符,用于指示 Go 回源到源地址去抓取(比如 GitHub 等)。当配置有多个代理地址时,如果第一个代理地址返回 404 或 410 错误时,Go 会自动尝试下一个代理地址,当遇见 “direct” 时触发回源,也就是回到源地址去抓取。

GOPRIVATE

设置了GOPROXY 之后,go 命令就会从配置的代理地址拉取和校验依赖包。当我们在项目中引入了非公开的包(公司内部git仓库或 github 私有仓库等),此时便无法正常从代理拉取到这些非公开的依赖包,这个时候就需要配置 GOPRIVATE 环境变量。GOPRIVATE用来告诉 go 命令哪些仓库属于私有仓库,不必通过代理服务器拉取和校验。

GOPRIVATE 的值也可以设置多个,多个地址之间使用英文逗号 “,” 分隔。我们通常会把自己公司内部的代码仓库设置到 GOPRIVATE 中

使用go module引入包

接下来我们将通过一个示例来演示如何在开发项目时使用 go module 拉取和管理项目依赖。

5.再次验证path是否好用:(注意:控制命令台需要重启)

ok了,伙伴们,到现在为止,我们就可以愉快的开启GoLang之旅了。我们下篇再见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/49619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何优化 PostgreSQL 中的连接查询性能?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 如何优化 PostgreSQL 中的连接查询性能?一、理解连接查询的基本原理二、优化连接查询的关键…

Pyqt5新手教程

PyQt界面开发的两种方式:可视化UI 编程式UI (1)可视化UI:基于Qt Designer可视化编辑工具进行组件拖放、属性设置、布局管理等操作创建界面。 一是将其保存为.ui文件,然后在PyQt应用程序中加载和使用.ui文件。 二是使用…

企业级数据分析平台合集介绍

企业发展离不开数据分析,数据分析推动着企业运营、决策和战略规划。它正逐步深入到各行各业的核心业务流程中,从传统的金融、零售、制造业扩展到医疗健康、教育、能源等更多领域。企业正通过数据分析平台实现数据资源的最大化利用,推动业务与…

音频剪辑里的几种基础操作

音频对于视频的重要性,怎么强调都不为过,它在视频里扮演着举足轻重的角色,对观众有着极为深远的影响。下面为您阐述音频在视频中的关键意义: ① 情感传递:音频有强大的情感传达能力,借助声音的起伏变化、音…

项目标红,识别不了maven项目,解决办法

首先,检查 preferences 其次,检查IDEA 的 jdk。File-》Project Structure 最后: 1. 2. mvn clean install -Dmaven.test.skiptrue 跳过单元测试 maven跳过单元测试-maven.test.skip和skipTests的区别-CSDN博客

CAD框架介绍

1、适用范围:矢量编辑软件如 服装模板软件、CAD软件、绘图软件 2、支持PLT,DXF,PDF,GCode(服装裁割指令)等矢量文件导入 3、支持简易的自动手动排料 4、直线,曲线等编辑功能 5、分页输出绘图指令 6、良好的框架结构:绘图引擎…

【MP4】mp4文件详解(二)—— mp文件分析工具

文章目录 一、前言二、MP4文件分析工具1、软件工具1.1、UltraEdit1.2、Hexinator1.3、mp4info1.4、mp4explorer1.5、MediaInfo 2、在线工具2.1、Online Mp4 Parser2.2、MP4Box.js / ISOBMFF Box Structure Viewer 一、前言 MP4文件分析工具可以帮助你查看和分析MP4视频文件中的…

从混乱到有序:Codigger 软件项目体检助力软件项目管理

在软件项目管理的奇妙世界里,程序员可弟哥就像是一位勇敢的探索者,他深知项目管理中那些常见的难题。 项目进度常常如同脱缰的野马,难以掌控,导致交付日期不断延迟,这让可弟哥十分头疼。成本也仿佛是个调皮的小精灵&am…

Vuex、Redux状态管理库

目录 状态管理库 单一事实来源:存储更新所有组件状态 Vuex 安装 配置 src->store index:拆分模块modules vue2 vue3 main index【以Conversation模块为例】【拆分state等属性】 store state() { return state; }类似于 vue中data() retu…

微软“蓝屏”事件:对全球IT基础设施韧性与安全性的深刻反思

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

数据传输安全--IPSEC

目录 IPSEC IPSEC可以提供的安全服务 IPSEC 协议簇 两种工作模式 传输模式 隧道模式 两个通信保护协议(两个安全协议) AH(鉴别头协议) 可以提供的安全服务 报头 安全索引参数SPI 序列号 认证数据 AH保护范围 传输模…

软考-软件设计师(2)-操作系统概述:多级索引、PV操作、段页式存储、磁盘管理、进程管理、有限自动机、I/O设备管理软件分层等高频考点

场景 软考-软件设计师-操作系统概述模块高频考点整理。 以下为高频考点、知识点汇总,不代表该模块所有知识点覆盖,请以官方教程提纲为准。 注: 博客:霸道流氓气质-CSDN博客 实现 知识点 文件系统多级索引 求文件系统多级索引的最大长度 二级索引=一级索引*一级索引…

vue3使用el-input-number,只能是整数,并且没有四舍五入

效果图 element plus上自带了个属性precision,设置**:precision“0”**,也可以没有小数点,但它这个是四舍五入的,不满足我的需要 我主要用的事件是blur的,input的试过发现值改变了,但是页面显示的没有改变,…

奔跑利润如何释放?来看看怎么分析现货黄金的跟踪止损位

跟踪止损位是现货黄金交易和资金管理中一个重要的概念。我们做现货黄金的时候,将仓位分成两部分(或以上)。第一部分,我们在首个目标位获利离场,剩下那部分就可以让它奔跑,看看市场会不会走出大行情&#xf…

Java 集合中的 Vector 类和 Stack 类

一.介绍 Java 集合框架提供了一组强大的类和接口来处理和操作对象集合。其中,Vector 和 Stack 类提供了以顺序方式存储和管理元素的基本功能。这两个类都是传统集合的一部分,但由于它们的同步性质和特定用例,它们仍然具有相关性。Vector 类实…

DDoS 究竟在攻击什么?

分布式拒绝服务(DDoS)攻击是一种常见的网络攻击形式,攻击者通过向目标服务端发送大量的请求,使目标服务端无法进行网络连接,无法正常提供服务。 DDoS 攻击通常是由大量的分布在全球各地的 “僵尸” 计算机&#xff08…

STM32F401VET6 PROTEUS8 ILI9341 驱动显示及仿真

stm32cubemx新建工程代码&#xff0c;并生成工程 设置gpio 设置SPI 其他的参考stm32默认设置 然后编辑驱动代码 ili9341.h #ifndef ILI9341_H #define ILI9341_H#include <stdbool.h> #include <stdint.h>#include "glcdfont.h" #include "stm32…

物联网Java项目, 2万多TPS如何处理?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「物联网Java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;2W个采集点&#xff0…

内网安全:IPC横向

IPC计划任务横向 IPC配合系统服务横向 前言&#xff1a; IPC是为了实现进程之间的通信而开放的管道。IPC可以通过验证用户名和密码来获取相应的权限。通过IPC可以与目标机器建立连接。 IPC计划任务横向 本次目标&#xff1a;通过机器192.168.11.40&#xff0c;横向控制机器192…

学生信息管理系统详细设计文档

一、设计概述 学生信息管理系统是一个用于管理学生信息的软件系统&#xff0c;旨在提高学校对学生信息的管理效率。本系统主要包括学生信息管理、课程信息管理、成绩信息管理、班级信息管理等功能模块。详细设计阶段的目标是确定各个模块的实现算法&#xff0c;并精确地表达这…