【Go语言从入门到精通系列-基础篇】Go安装 + 语言特性,以及开启你人生中的第一个go程序

news2024/11/17 13:53:11

系列文章

【Go语言从入门到精通系列-基础篇】Go安装 + 语言特性,以及开启你人生中的第一个go程序
【Go语言从入门到精通系列-基础篇】Go语言包的管理以及基础语法与使用。


Go语言从入门到精通系列-基础篇

  • 系列文章
  • 前言
  • 第一章 Go语言开发基础
    • 1.1 Go语言的优势
    • 1.2 Go语言开发工具介绍
    • 1.3 Go语言的特性
    • 1.4 搭建Go语言开发环境
      • 1.4.1 Windows 安装
      • 1.4.2 Linux(Centos) 开发环境搭建
    • 1.5 编写人生中第一个go程序
    • 1.6 额外知识点
  • 总结

前言


在这里插入图片描述

Go语言时Google 于 2009年开源的一门编程语言,相比于Python 以及其他语言,它快速, 安全, 并行,内存管理,编译迅速。

第一章 Go语言开发基础

1.1 Go语言的优势

说的通俗易懂一点,Go语言上手容易,且解决了并发编程和提高底层应用开发效率的痛点。
其热门应用就有我们熟知的云技术Docker K8s。目前,Go語言所流行的主要項目应该是中层项目,即PaaS项目。
比如一些消息缓存中间件;服务发现;服务代理;控制系统;日志收集等, 没有复杂的业务场景,也到不了特别底层的中间平台层的软件工具。其实用来做一些业务系统的后台RestFul API 也是非常不错的。

Go语言有如下优点:
(1) Go语言易学,语法简单且没有过多的继承与多态。
(2) 简单并发编程。在要支持并发的函数前面加一个Go即可,语言层面支持并发控制。
(3) 丰富的标准库;性能优越;可在语言层面定义源代码的格式化。也就是在你保持过后, 代码会变成同一风格,自动去除多余空行,自动对齐。

1.2 Go语言开发工具介绍

VscodeGolandLiteIDE
真香收费不友好

比较流行的Go语言开发工具包含VscodeGolandLiteIDE等,通常我们使用都是Vscode,各自的区别在于Vscode需要安装插件,需要配置等,Goland收费,LiteIDE免费但是在使用过程中代码提示不友好,所以Vscode才是真香。

1.3 Go语言的特性

  • 定义变量用 := 不需要指定 int string float,自动识别类型。
  • for循环不需要括号。
  • 每一行后无需跟分号,如果有保存后也会自动去除。
  • 函数声明使用func
  • 公共变量与公共函数使用大写字母开头的名称,私有变量与私有函数使用小写字母开头的名称。
  • 开启新的协程用 go +funcName,例如一个下载任务download() 则是 go download(),会在子协程中下载,可以使用WaitGroup 或 channel 通知任务结果。
  • Go没有继承与多态,可以使用interface 实现类似C++中的多态特性。
  • 错误处理 使用 defer panic recover 来处理。

1.4 搭建Go语言开发环境

通常我们有不同的开发环境, Windows; Linux; Mac Os(不做讲解),就对以上2种安装方式做一下记录。

1.4.1 Windows 安装

Go语言中文网:https://studygolang.com/dl

  1. 进入网站点击Microsoft Windows 下载 最新版本镜像包 ,如图所示:
    在这里插入图片描述
  2. 下载完成后,进行下载文件所在目录, 选择安装包,单击 Install按钮,然后安装提示单机Next按钮即可。可自行更改安装位置。然后就是傻瓜式操作Next到底。
  3. 进入到你Go语言安装目录 cmd 打开命令行,输入: go env,会显示已经配置好的环境信息。输入:go version 可查看版本信息。其中GOPATH 是工程路径, 可以自己在环境变量中修改它。方法:计算机–>属性–>高级系统设置–>环境变量修改。在这里插入图片描述
  4. 如果想要全局go 命令好使,需要添加GOROOT变量,值为Go环境的路径。

1.4.2 Linux(Centos) 开发环境搭建

  1. 执行命令yum install go,即可自动安装Golang 的次新版本。
    在这里插入图片描述
  2. 如需最新版本,请手动去官网选择版本后 使用 wget 源码包地址 下载后,tar -zvxf 源码包文件 解压, 需要注意环境变量配置也是需要手动操作,进入 vim ~/.basg_profile 文件加入以下语句:
export PATH=$PATH:你go环境目录下的bin文件路径
export GOPATH=你的go环境目录
export GOROOT=自定义项目工程目录,也就是 src,pkg, bin 的上层路径

esc: 退出;wq:保存;source ~/.basg_profile: 使更改生效
  1. 通过 go version 验证是否成功,返回版本信息则代表配置成功。

1.5 编写人生中第一个go程序

安装开发环境后创建一个新的 hello_world.go文件, 开启你面向世界的Go语言的第一个程序。

package main
import (
	"fmt"
)

func main()  {
	fmt.Printf("Hello World!")
}

在源代码文件所在目录下输入:

go run hello_world.go

或者build编译执行

go build hello_world.go
./hello_world

输出结果如下:

Hello World!

1.6 额外知识点

  • go get:安装包时会默认下载到GOPATH/src下面。
  • go build:编译当前项目。
  • go run ***.go:编译并执行go程序。
  • go install:编译并安装依赖。
  • go env:查看Go的各个变量信息。
  • go version:查看当前Go安装版本。

总结

学习犹如逆水行舟不进则退,就算你时特别聪明,也要学习,从头学起。

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

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

相关文章

C语言快速排序非递归实现

目录 栈的辅助(栈的实现可以调用之前实现的数据结构): 1,初始状态 2,循环 3,终止 4,注意 小点: 1,递归的使用会造成栈空间的消耗,使用递归,…

刷题day51:重新安排行程 ***

题意描述: 给你一份航线列表 tickets ,其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 …

【宝塔邮局管理器】使用教程、Email配置

1.安装宝塔邮局插件前,需要先安装redis服务,并设置redis密码。 安装完Redis服务后设置密码,设置密码时不要使用&%这类特殊符号 会导致负载状态显示异常,可使用英文数字组合密码 PS:邮局的反垃圾模块 rspamd服务需要…

Spring Cloud快速入门

文章目录Spring Cloud快速入门一、基础概念1、微服务架构2、微服务技术栈3、什么是Spring Cloud?4、Spring Cloud和Spring Boot的联系?5、比较成熟的互联网架构二、Rest环境搭建1、搭建提供者1.1、创建一个父工程1.2、创建一个springcloud-api模块1.3、创建一个spr…

SSM学习记录3:响应(注释方式 + SprigMVC项目 + 2022发布版本IDEA)

响应 ResponseBody注解的作用是将当前控制器中方法的返回值作为响应体 1.返回页面 无需在方法上进行ResponseBody注解,只需RequestMapping匹配地址,并且返回值为带后缀的页面名字符串 前面学习中除了json数据,所有带ResponseBody注解的方法…

iphone用什么蓝牙耳机好?和iphone适配的蓝牙耳机推荐

随着科技的不断发展,人们已经离不开各种智能设备。蓝牙耳机作为一种非常方便的音频设备,已经逐渐成为了许多人日常生活中不可或缺的一部分。然而,苹果产品的价格一直都是昂贵的,有没有与iphone适配的耳机呢?下面我们来…

ServletAPI详解(三)-HttpServletRequest

我们来看第二个类:HttpServletRequest HttpServletRequest HttpServletRequest表示的是一个http请求对象,是tomcat自动构造的,tomcat会实现监听端口,接收连接,读取请求,解析请求,构造请求对象等一系列操作 下面的方法可用在 Servlet 程序中读取 HTTP 头。这些方法通过 HttpS…

若依— — 快速入门【源码分析】

若依— — 快速入门 1 什么是若依 官网地址:http://www.ruoyi.vip/ 若依是一款优秀的开源项目,涉及到企业开发中大部分的管理系统,我们依此为模板进行二次开发,可以快速开发出符合大部分公司中的后台管理系统。 2 使用若依 使用开…

Spring Security --- authorizeRequests配置

目录 自定义配置类之访问权限 匹配顺序规则 访问控制包含 访问控制url匹配 访问控制方法 角色、权限判断 使用注解进行角色权限控制 自定义配置类之访问权限 http.authorizeRequests()主要是对url进行访问权限控制通过这个方法来实现url授权操作支持链式写法 匹配顺序…

【react全家桶学习】react简介

react是什么? react是用于构建用户界面的JS库,是一个将数据渲染为HTML视图的开源JS库 谁开发的? 由Facebook开发,且开源 为什么要学? 原生JavaScript操作DOM繁琐、效率低 ( DOM-API操作 UI)使用JavaScript直接操作…

Attention注意力机制

加粗样式通俗理解:你会注意什么? 对于一个模型而言(CNN,LSTM),模型本身很难决定什么重要什么不重要,因此注意力机制诞生了。 注意力机制:我们会把焦点聚焦在比较重要的事务上 怎么…

详细聊一聊Android Apk的四代签名

简介 大部分开发者对apk签名还停留在APK v2,对APK v3和APK v4了解很少,而且网上大部分文章讲解的含糊不清,所以根据官网文档重新整理一份。 apk签名从APK v1到APK v2改动很大,是颠覆性的,而APK v3只是对APK v2的一次…

RocketMQ是是如何管理消费进度的?又是如何保证消息成功消费的?

RocketMQ消费者保障 作者: 博学谷狂野架构师GitHub:GitHub地址 (有我精心准备的130本电子书PDF) 只分享干货、不吹水,让我们一起加油!😄 消息确认机制 consumer的每个实例是靠队列分配来决定如何消费消息的…

业务异步离线任务平台思考

目录 一、离线任务平台定义 二、实际开发那种的实现方式分析 三、企业应用与链接分享 (一)具体企业应用举例 (二)离线任务平台相关文章和论文链接 四、开源代码库参考 一、离线任务平台定义 离线任务平台通常是指一种基于云…

基于 Verilog HDL 设计真彩图的灰度处理模块

引言 FPGA比较擅长的是作定点数整数运算,那么对于带有小数部分的乘加运算。一般都选择先扩大若干倍,而后将运算结果缩小若干倍实现。 应用案例,真彩图转灰度图的心理学计算公式: Gray 0.299R 0.587G 0.114B 本文给出具体的…

Spring boot基础学习之(十八):通过shiro框架使用Mybatis实现用户的认证完整的认证流程

在上几篇文章的基础上,实现本次案例 注意:本篇文章的实现代码在几篇文章都已经详细的讲过了,所以在此篇文章,将不再有理论知识的陈述,更过的流程,如何通过代码实现连接数据库进行认证 添加本次案例所需要的…

【并发编程】ConcurrentHashMap源码分析(二)

addCount 统计元素个数 private transient volatile long baseCount; //初始化大小为2,如果竞争激烈,会扩容 2->4 private transient volatile CounterCell[] counterCells;如果竞争不激烈的情况下,直接用cas (baseCount1)如果竞争激烈的情况下,采用…

项目管理的三要素:时间、成本和质量

项目管理的三要素:时间、成本和质量,他们作为衡量一个项目的成功失败的指标,贯穿项目整个过程。 时间: 项目时间管理包括使项目按时完成必须实施的各项过程。 项目计划按照逻辑关系安排计划活动顺序时,需要考虑进度…

C#,码海拾贝(16)——求行列式值的全选主元高斯消去法,《C#数值计算算法编程》源代码升级改进版

1 高斯消去法 数学上,高斯消元法(或译:高斯消去法),是线性代数规划中的一个算法,可用来为线性方程组求解。但其算法十分复杂,不常用于加减消元法,求出矩阵的秩,以及求出…

利好消息不断原油价格大幅走高

​几个OPEC成员国将在年底前将全球产量再削减116万桶/天,这将进一步给央行遏制全球通胀的努力带来负担,但关键是保护该联盟更广泛的产量策略免受政治压力的影响。 华盛顿介入批评了上周日的声明,8个OPEC生产国(包括组织的领导国沙…