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

news2024/10/22 5:29:22

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 main

import "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+n2
    sub := n1-n2
    return 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 main

import "fmt"

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

在这里插入图片描述

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

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

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

相关文章

芯知识 | NVH-FLASH语音芯片支持平台做语音—打造音频IC技术革新

随着科技的飞速发展,人们对于电子产品的音频性能要求越来越高。在这种背景下,NVH-FLASH系列语音芯片应运而生,作为音频IC领域的一次重大技术革新,NVH-FLASH系列语音芯片凭借其卓越的性能与灵活的支持平台,正逐步引领着…

Java 解决阿里云OSS服务器私有权限图片通过URL无法预览的问题

简单描述一下此场景的业务: 由于系统中需要将上传的图片在系统中展示(private私有权限不能直接通过url直接展示),不想通过先下载下来然后以流的形式返回给前台展示这种方法很不友好,毕竟现在前台展示方式都是通过图片URL进行展示,所以就上官网查看API文档,果然找到了解决…

【数据库】Mysql的锁类型

Mysql中的锁机制主要是为了保证数据的一致性和完整性,在并发的情况下起着至关重要的作用。其中锁的类型主要是分为以下几种: 按照粒度分类 全局锁:对于整个数据库实例进行枷锁,加锁后整个实例就处于只读的状态。局锁通常用于需要…

Gin框架操作指南01:开山篇

Gin是目前最流行,性能最好的的GoWeb框架,几乎成为了学习GoWeb必备的知识。本人最近也在学Gin,在b站搜了很多教程,发现有的教程不够详细,有的教程工具包安装有问题,而官方文档的很多示例代码又不全&#xff…

基于卷积神经网络的中草药识别系统,resnet50,mobilenet模型【pytorch框架+python源码】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示: 卷积神经网络,中草药识别系统,resnet50,mobilenet【pytorch框架,python】_哔哩哔哩_bilibili (一)简介 基于卷积神经网络的中…

3.添加缓存和缓存更新策略

项目地址:https://github.com/liwook/PublicReview 添加缓存 查询商铺缓存 我们查询商店的时候,通过接口查询到的数据有很多,我们希望在此用Redis缓存数据,提高查询速度。 对于店铺的详细数据,这种数据变化比较大&a…

Win安装Redis

目录 1、下载 2、解压文件并修改名称 3、前台简单启动 4、将redis设置成服务后台启动 5、命令启停redis 6、配置文件设置 1、下载 【下载地址】 2、解压文件并修改名称 3、前台简单启动 redis-server.exe redis.windows.conf 4、将redis设置成服务后台启动 redis-server -…

xlnt加载excel报错:xl/workbook.xml:2:2581: error: attribute ‘localSheetId‘ expected

解决方案 大家不一定能看懂,地址里说的啥意思,地址过去主要说明了从https://github.com/musshorn/xlnt/tree/issue_685合入可以解决问题,后面再想推送到官方地址,但没人维护了。 我这边直接给大家说一个结果就是:问题…

python 爬虫 入门 四、线程,进程,协程

线程和进程大部分人估计都知道,但协程就不一定了。 一、进程 进程是操作系统分配资源和调度的基本单位,一个程序开始运行时,操作系统会给他分配一块独立的内存空间并分配一个PCB作为唯一标识。初始化内存空间后进程进入就绪态,PC…

GUI编程

GUI编程 【Java从0到架构师课程】笔记 GUI简介 GUI:图形用户界面,在计算机中采用图形的方式显示用户界面 java的GUI开发 AWT:java最早推出的GUI编程开发包,界面风格跟随操作系统SWT:eclipse就是java使用SWT开发的Sw…

【ArcGIS微课1000例】0125:ArcGIS矢量化无法自动完成面解决方案

文章目录 一、坐标系统问题二、正确使用自动完成面工具一、坐标系统问题 1. 数据库坐标系 arcgis矢量化的过程中,无法自动完成面,可能是因为图层要素没有坐标系造成的。双击数据库打开数据库属性,可以查看当前数据框的坐标系。 2. 图层坐标系 双击图层,打开图层属性,切…

从零开始学PHP之变量作用域数据类型

一、数据类型 上篇文章提到了数据类型,在PHP中支持以下几种类型 String (字符串)Integer(整型)Float (浮点型)Boolean(布尔型)Array(数组)Objec…

滤波算法与SLAM:从概率角度理解SLAM问题

滤波算法与SLAM 第三章:MAP/MLE问题和贝叶斯网络 文章目录 滤波算法与SLAM前言一、最大后验问题(MAP)与最大似然问题(MLE)二、贝叶斯网络与SLAM问题三、因子图与SLAM问题四、从概率角度理解Kalman Filter与SLAM 前言 …

我谈傅里叶变换幅值谱的显示

在图像处理和分析中通常需要可视化图像傅里叶变换的幅值谱。通过幅值谱,可以直观地观察频率成分的分布,帮助理解图像的结构和特征。 很多刊物中直接显示傅里叶变换的幅值谱。 FFT fftshift(fft2(double(Img))); FFT_mag mat2gray(log(1abs(FFT)));由…

【Linux】线程基本概念,线程控制

目录 基本概念 重新理解进程 线程真实存在吗? 问题解答 线程资源 线程控制 线程创建 如何全面看待线程函数传参 如何看到线程函数返回 线程查询 线程等待 线程终止 线程分离 基本概念 线程(thread)是指在单个进程内,多…

探索前端与 AI 的结合:如何用 GPT-4 助力开发效率

前言:开发者的“神队友” GPT-4 还记得那些深夜奋战,紧盯着屏幕敲代码的日子吗?表单不验证、布局乱飞、BUG 根本找不到,这些时刻简直能让人抓狂。你可能会想:“要是有个智能助手能帮我搞定这些多好!” 那么…

#HarmonyOS:页面和自定义组件生命周期

页面生命周期 即被Entry装饰的组件生命周期 onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景。onPageHide: 页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。onBackPress: 当用户点击返回按钮是触发 组件…

全面了解 NGINX 的负载均衡算法

NGINX 提供多种负载均衡方法,以应对不同的流量分发需求。常用的算法包括:最少连接、最短时间、通用哈希、随机算法和 IP 哈希。这些负载均衡算法都通过独立指令来定义,每种算法都有其独特的应用场景。 以下负载均衡方法(IP 哈希除…

如何让自己的网站,被更多的人搜索到(免费方案)

文章目录 一、要做时间的朋友二、需要独立IP的服务器三、SEO信息如何设置设置网站TDK生成网站地图设置搜索引擎自动提交部署SSL证书加分项:定期更新文章 引言: 许多人都有这样一个问题:做好自己的网站,如何让这个网站被更多的人浏…

WPF实现类似网易云音乐的菜单切换

这里是借助三方UI框架实现了,感兴趣的小伙伴可以看一下。 深色模式:​ 浅色模式: ​这里主要使用了以下三个包: MahApps.Metro:UI库,提供菜单导航和其它控件​​​​​​​ 实现步骤:1、使用B…