当前位置: 首页 > news >正文

(Golang)初识Go语言!!为什么选择Go?如何配置Go的开发环境?VS Code如何配置Go环境?

1. Go能做什么?

在这里插入图片描述

  • go的优点:运行速度快、并发能力强

  • Go的应用领域:

    • 区块链应用(BT、分布式账本技术)

    • 后端服务应用 例如:

      • 美团后台流量支撑程序

        支撑主站的后台流量(排序、推荐、搜索等),提供负载均衡、缓存、容错、按条件分流…

      • 仙侠道 (类似游戏)

        游戏服务端(通讯、逻辑、数据存储)

    • 云计算 / 云服务后台应用 例如

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

        CDN的调度系统、分发系统、监控系统、短域名服务、CDN内部开发平台等

      • 京东消息推送云服务/京东分布式文件系统

        后台所有服务全部用go实现

2. Golang的概述

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。

Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。

  • 特点
    • 简洁、快速、安全 简化说:Go = C + Python
    • 并行、有趣、开源
    • 内存管理、数组安全、编译迅速

Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。

对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了

发展历程:

  1. 2007年,谷歌工程师RobPike,Ken Thompson 和 Robert Friesemer 开始设计一门全新的语言(Go语言雏形)
  2. 2009年11月10日,Google将Go语言以开源代码的方式向全球发布
  3. 2015年8月19日,Go 1.5发布,本次更新中移除了“最后残余的C代码”
  4. 2017年2月17日,Go语言1.8发布
  5. 2017年8月24日,Go语言1.9发布。19.2版本
  6. 2018年2月16日,Go语言1.10发布

2.1 特点:

2.1.1 基本结构

Go从C语言中继承了很多理念,包括表达式语法,控制结构,基础数据类,调用参数传值,指针等,也保留了和C语言一眼的编译执行方式及弱化的指针

package main// 取得指针
func test(num *int){*num = 20
}

2.1.2 包概念

在GO语言中,所有的文件都必须要归属于一个包,不能够单独存在。

包括里面所使用的类和方法

package mainimport "fmt"func test(){fmt.Println("ok")
}

2.1.3 GC 垃圾回收

Go语言也与Java一样,拥有垃圾回收机制,内存自动回收,不需要开发人员管理。

不过在GC上,Go语言的GC并没有如Java的GC一样敏感。

2.1.4 天然并发

Go语言针对并发开发

  • 从语言层面支持并发,实现相比其他语言更加简单
  • goroutine - 轻量级线程,可实现大并发处理,高效利用多核
  • 基于CPS并发模型实现

2.1.5 管道通信

Go吸收了管道通信机制,形成了Go语言特有的管道channel

通过管道,可以实现不同的goroute之间的相互通信

在Java中实现管道通信需要配置消息中间件(rabbitMq)或者本身的Socket

2.1.6 函数返回多个值

func test(n1 int ,n2 int)(int,int){sum := n1+n2sub := n1-n2return sum,sub
}

2.1.7 创新

切片slice、延时defer

3. SDK 软件开发工具包

SDK是提供给开发人员使用的,其中包含了对应开发语言的工具包
官网地址快速链接:Golang官网
在这里插入图片描述

Go的官网可能会被墙,所以也可以去浏览各类网站提供的SDK版本资源包下载

4. 配置环境变量

环境变量说明内容
GOROOT指定SDK的安装路径D:_Golang\GoSdk\go1.23.2
Path在系统路径中添加SDK的/bin目录%GOROOT%\bin
GOAPTH工作目录。就是后续开发可能会用到的第三方工具或开发项目存放的目录指定任意文件夹
GOPROXY资源代理地址https://goproxy.cn 七牛云

4.1 步骤:

  1. 设置》系统》高级系统设置

  2. 弹出的窗口中选择 “环境变量”

  3. 环境变量窗口中,新建 GOROOT、GOPATH和GOPROXY 变量

    • GOROOT是SDK的安装目录,选择到SDK的主目录路径就可以了
    • GOPATH是工作路径,以后开发会使用到其他的第三方工具库,可以自己选择到一个存放的文件夹。
    • GOPROXY是代理地址,因为Go原生的资源地址大概率会访问不到,所以直接在系统变量这里设置会很好

    在这里插入图片描述

  4. 编辑 Path 变量

    在这里插入图片描述

    • 在Path变量中编辑,新建一个变量:%GOROOT%\bin
  5. 以上步骤做完后全部选择确认即可

  6. 打开 cmd 窗口

    go env
    go version
    
    • 输入上述代码,如果出现环境信息和版本信息,那么就代表环境OK
    #开启mod模式(项目管理需要用到)
    go env -w GO111MODULE=on
    #重新设置成七牛镜像源(推荐)或阿里镜像源(用原有的会比较慢)
    go env -w GOPROXY=https://goproxy.cn,direct
    go env -w GOPROXY=https://mirrors.aliyun.com/goproxy#关闭包的MD5校验
    go env -w GOSUMDB=off#查看环境变量
    go env
    
    • 然后在输入上述代码,配置镜像代理地址

5. VS Code配置

使用VS Code开发,需要安装插件,还需要安装对应的安装包

5.1 步骤

5.1.1 安装插件

  • 安装go插件。

在这里插入图片描述

  • 运行.runner插件
    在这里插入图片描述

    装好.runner插件后,需要对该插件设置

    在这里插入图片描述

    将这三个选项打开,以方便在vs code的终端使用

5.1.2 配置

在vs code中 ctrl+shift+p打开命令终端

输入

go: install

选择 Update Tools 这个选项,回车或鼠标单击选择

在这里插入图片描述

然后将所有的选项都选择,最后点击确定。

在这里插入图片描述

5.1.3 运行

最后重启一次VS Code,测试一下代码是否运行成功

package mainimport "fmt"func main() {fmt.Println("see,is go!")
}

在这里插入图片描述

运行的按钮,在窗口的右上角,或者直接按:ctrl+alt+N 快速运行

相关文章:

(Golang)初识Go语言!!为什么选择Go?如何配置Go的开发环境?VS Code如何配置Go环境?

1. Go能做什么? go的优点:运行速度快、并发能力强 Go的应用领域: 区块链应用(BT、分布式账本技术) 后端服务应用 例如: 美团后台流量支撑程序 支撑主站的后台流量(排序、推荐、搜索等&#xf…...

【人工智能-初级】第15章 TensorFlow 和 PyTorch 的入门:深度学习的利器

文章目录 一、引言二、TensorFlow 简介2.1 什么是 TensorFlow?2.2 TensorFlow 安装2.3 TensorFlow 构建简单的神经网络2.4 TensorBoard 可视化 三、PyTorch 简介3.1 什么是 PyTorch?3.2 PyTorch 安装3.3 PyTorch 构建简单的神经网络 四、TensorFlow 与 P…...

git禁用 SSL 证书验证

命令 git config --global http.sslVerify false注意:禁用 SSL 证书验证是不安全的,可能会使你的 Git 操作面临中间人攻击的风险。因此,只有在你确信网络环境是安全的,且了解禁用 SSL 验证的后果时,才应该使用这个配置…...

C++之《剑指offer》学习记录(2):sizeof

笔者最近在找工作时,无意间读到了一本名为《剑指offer》的书,粗略翻阅了一下,感觉这将会是一本能让我不再苦恼于笔试和面试“手搓代码”的书。故笔者写下该系列博客记录自己的学习历程,希望能和这本书的读者朋友们一起交流学习心得…...

linux线程 | 同步与互斥 | 线程池以及知识点补充

前言:本节内容是linux的线程的相关知识。本篇首先会实现一个简易的线程池, 然后再将线程池利用单例的懒汉模式改编一下。 然后再谈一些小的知识点,比如自旋锁, 读者写者问题等等。 那么, 现在开始我们的学习吧。 ps:本…...

ArkTS 如何实现表单,地区选择效果

速览 ArkTS实现表单和地区选择效果,可通过Picker组件实现地区选择下拉列表,结合表单组件如Input等构建完整表单。使用ArkTS提供的UI组件库和状态管理机制,可以方便地构建复杂且交云互动的表单界面。 1. ArkTS 表单基础 在ArkTS中,构建表单通常涉及多个UI组件的组合,如I…...

Vite 项目的核心配置- vite.config.ts 和 tsconfig.json 全解析

一、vite.config.ts 详细说明 vite.config.ts 是 Vite 项目的核心配置文件。它允许你自定义 Vite 的行为,以适应你的项目需求。 让我们来看看其中一些重要的配置选项: import { fileURLToPath, URL } from node:url// 使用 defineConfig 帮手函数,这样不用 jsdoc …...

如何使用JMeter进行性能测试的保姆级教程

性能测试是确保网站在用户访问高峰时保持稳定和快速响应的关键环节。作为初学者,选择合适的工具尤为重要。JMeter 是一个强大的开源性能测试工具,可以帮助我们轻松模拟多用户场景,测试网站的稳定性与性能。本教程将引导你通过一个简单的登录场…...

Qt 实战(11)样式表 | 11.1、样式表简介

文章目录 一、样式表简介1、简介2、样式表语法2.1、样式规则2.2、选择器类型2.3、伪状态2.4、设置子控件状态 3、样式表继承与优先级3.1、样式表继承3.2、样式表优先级3.3、解决冲突3.4、样式表层叠 4、总结 前言: 在开发图形用户界面(GUI)应…...

WebGl 多缓冲区和数据偏移

1.多缓冲区 多缓冲区技术通常涉及到创建多个缓冲区对象,并将它们用于不同的数据集。这种做法可以提高数据处理效率,尤其是在处理大量数据或需要频繁更新数据时。通过预先分配和配置多个缓冲区,可以在不影响渲染性能的情况下,快速…...

基于SSM的甜品店销售管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

Spacetime Gaussian Feature Splatting for Real-Time Dynamic View Synthesis

Spacetime Gaussian Feature Splatting for Real-Time Dynamic View Synthesis 摘要 动态场景的新视角合成一直是一个引人入胜但充满挑战的问题。尽管最近取得了很多进展,但如何同时实现高分辨率的真实感渲染、实时渲染和紧凑的存储,依然是一个巨大的…...

PCL 基于FPFH特征描述子获取点云对应关系

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 FPFH特征计算函数 2.1.2 获取点云之间的对应点对函数 2.1.3 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总…...

项目实战:Qt+OpenCV仿射变换工具v1.1.0(支持打开图片、输出棋盘角点、调整偏移点、导出变换后的图等等)

若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/143105881 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、Op…...

OpenCV坐标系统与图像处理案例

在图像处理中,理解图像的坐标系统是至关重要的。OpenCV,作为一个强大的计算机视觉库,提供了丰富的功能来操作图像。本文将介绍OpenCV中的坐标系统,并提供一个简单的案例来展示如何使用这些坐标来修改图像的特定区域。 OpenCV坐标…...

Unity之如何使用Unity Cloud Build云构建

文章目录 前言什么是 UnityCloudBuild?如何使用Unity云构建Unity 团队中的人员不属于 Unity Team 的人员UnityCloudBuild2.0价格表如何使用Unity云构建配置CloudBuild前言 Unity Cloud Build作为Unity平台的一项强大工具,它允许开发团队通过云端自动构建项目,节省了繁琐的手…...

Halcon开启多线程

并行运算(提升检测时间) 支持主线程中的子线程并行执行程序和调用算子。 一旦启动,子线程由线程 ID 标识,该线程 ID 是一个取决于操作系统的整数进程号。 子线程的执行独立于它们启动的线程。 因此,无法预测子线程执行…...

Echarts 点击事件无法使用 this 或者 this绑定的数据无法获取

这里写自定义目录标题 现象解决方案 现象 给echarts绑定自定义点击事件时,无法使用this,并且无法获取到this绑定的数据。 解决方案 增加:const _this this; 代码块如下: const _this this; let myChart echarts.init(docum…...

PCL 基于距离阈值去除错误对应关系(永久免费版)

目录 一、概述1.1 原理1.2 实现步骤1.3应用场景 二、关键函数2.1 获取初始点对2.2 基于距离的对应关系筛选函数2.3 可视化 三、完整代码四、结果展示 即日起,付费专栏所有内容将以永久免费形式陆续进行发表!!! 一、概述 在3D点云的…...

DirectX 11 和 Direct3D 11 的关系

以下是对两者的详细比较: DirectX 11 DirectX 11是微软的一项技术,为高性能游戏和复杂图形程序制定了标准。它是DirectX系列的一个版本,引入了多项创新功能,如硬件加速的Tessellation(细分曲面技术)、多线…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言:多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...