golang入门介绍-1

news2024/12/24 2:41:32

今天开始发布关于go语言入门到实战内容,各位小伙伴准备好。

go介绍

Go语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。是由 Google 公司开发的一种静态强类型、编译型、并发型、并具有垃圾回收功能的编程语言。

Go 是非常年轻的一门语言,它的主要目标是 兼具 Python PHP等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性

Go语言被称为 “C 类似语言” ,“21 世纪的C语言”。

go创始人

Rob Pike:曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作系统开发的主要领导人。

ken tomption:图灵奖得主,C语言前身B语言的作者,Unix的发明人之一, 操作系统Plan 9的主要作者。 共同开发了UTF-8。

Robert:曾为谷歌的V8 JavaScript引擎和Chubby开发代码。

Golang发展历程

2007年,谷歌工程师Ken Thompson、Rob Pike、Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。

2009.11.10 ,Google将Go语言以开放源代码的形式向全球发布。

2015年8月19日 ,Go1.5版本发布,本次更新中移除了“最后残余的C代码”,请内存管理方面权威专家Rick Hudson对GC进行重新设计

2017年2月16日 , Go1.8版本发布

2017年8月24日 , Go1.9版本发布

2018年2月16日 , Go1.10版本发布

2018年8月24日 , Go1.11版本发布

2019年2月25日 , Go1.12版本发布

2019年9月03日 , Go1.13版本发布

2020年2月25日 , Go1.14版本发布

2020年8月11日 , Go1.15版本发布

2021年2月16日 , Go1.16版本发布

2021年8月16日 , Go1.17版本发布

每半年发布一个版本

学习Go能做什么?

区块链开发

服务器端云计算开发

软件开发

go项目

腾讯

蓝鲸平台,容器开发有关

百度

BFE项目,负责前端流量的接入

京东

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

小米

小米互娱、小米商城、小米视频、小米生态链等团队都在使用Golang。

Docker k8s

GO语言特性

1)可直接编译成机器码,部署简单,一个文件搞定。

2)既有静态编译语言安全性,又有动态语言开发维护的高效率

3)语言层面支持并发,天生的支持并发。可以充分的利用多核。

4)内置runtime,支持垃圾回收。

5)简单易学,Go关键字是25个,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。

6)丰富的标准库,Go目前已经内置了大量的库,特别是网络库非常强大。

7)内置强大的工具,Go语言里面内置了很多工具链。

8)跨平台编译,那么就可以做到window系统编译linux的应用。

9)内嵌C支持,Go里面也可以直接包含C代码,利用现有的丰富的C库。

编译型语言 解释型语言

编译型语言: C语言、C++、Golang 不能跨平台

解释型语言:Python、JavaScript、PHP 跨平台

Java 既是编译型语言 也是解释型语言 跨平台

Go语言支持交叉编译 可以跨平台

为并发而生的GO

现代计算机都拥有多个核,但是大部分编程语言都没有有效的工具让程序可以轻易利用这些资源。编程时需要写大量的线程同步代码来利用多个核,很容易导致错误。

Go语言正是在多核和网络化的时代背景下诞生的原生支持并发的编程语言。Go语言从底层原生支持并发,无须第三方库,开发人员可以很轻松地在编写程序时决定怎么使用 CPU 资源。

Go语言的并发是基于 goroutine 的,goroutine 类似于线程,但并非线程。可以将 goroutine 理解为一种虚拟线程。Go语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用 CPU 性能。

GO性能

GO学习资料

https://golang.org 官网地址

The Go Programming Language 国内官网地址

Go 编程语言 中文官方网站

https://github.com/hackstoic/golang-open-source-projects 优秀的开源项目

首页 - Go语言中文网 - Golang中文社区

Goproxy.cn

安装

linux

解压

tar -xf go1.17.2.linux-amd64.tar.gz -C /usr/local/

添加环境变量

vim /etc/profile

export PATH=$PATH:/usr/local/go/bin

source /etc/profile

go version

注意:

GOROOT 的值应该为Go语言的当前安装目录:export GOROOT=/usr/local/go

PATH Go 程序的可执行文件,export PATH=$PATH:$GOROOT/bin

如果 在/usr/local下 可以不设置 GOROOT

win

目前最新版本 go1.17.2.windows-amd64

下载 完成后 直接下一步即可

目录介绍

api 存放Go API检查器的辅助文件

bin Go语言相关工具的可执行文件

doc 存放Go语言几乎全部的HTML格式的官方文档和说明

misc 存放各类编辑器或IDE(集成开发环境)软件的插件

pkg 用于在构建安装后,保存Go语言标准库的所有归档文件

src 存放所有标准库、Go语言工具,以及相关底层库(C语言实现)的源码

test 存放测试Go语言自身代码的文件

Goland安装

Goland 下载 goland-2021.2.4

GoLand by JetBrains: More than just a Go IDE

Go 语言的的包依赖管理

GOPATH

bin:存放编译后生成的二进制可执行文件pkg:存放编译后生成的 .a 文件src:存放项目的源代码,可以是你自己写的代码,也可以是你 go get 下载的包将你的包或者别人的包全部放在 $GOPATH/src 目录下进行管理的方式,我们称之为 GOPATH 模式。

go vendor 模式的过渡

为了解决 GOPATH 方案下不同项目下无法使用多个版本库的问题,Go v1.5 开始支持 vendor 。

go mod

go modules 在 v1.11 版本正式推出,在最新发布的 v1.14 版本中,官方正式发话,称其已经足够成熟,可以应用于生产上。

Go编译的命令

go build 命令可以将Go语言程序代码编译成二进制的可执行文件,但是需要我们手动运行该二进制文件;

go run 命令则更加方便,它会在编译后直接运行Go语言程序,编译过程中会产生一个临时文件,但不会生成可执行文件,这个特点很适合用来调试程序。

欢迎加入go语言学习交流QQ群:109640867

文档对应视频:go语言入门第一季

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

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

相关文章

在哪些领域中最需要使用 OCR 识别技术?真实场景介绍

根据我们的项目经验总结来说,OCR(光学字符识别)技术在多个领域中扮演着至关重要的角色,它能够将图像中的文本内容转换为机器可读的格式,极大地提高了数据处理的效率和准确性。以下是一些主要领域及其对应的应用场景和用…

phar反序列化原理及利用

phar是什么? phar 是 PHP 的一种归档文件格式,类似于 ZIP 或 TAR 文件,它可以包含多个文件和目录,并且可以像访问普通文件系统一样在 PHP 中进行访问。在php 5.3 或更高版本中默认开启 在php.ini中配置如下时,才能生成…

LabVIEW压电驱动迟滞补偿控制

LabVIEW压电驱动迟滞补偿控制 随着精密控制技术的迅速发展,压电陶瓷驱动器因其高精度和快速响应特性,在微纳精密定位系统中得到了广泛应用。然而,压电材料固有的迟滞非线性特性严重影响了其定位精度和重复性。开发了一种基于LabVIEWFPGA的压…

【初始RabbitMQ】死信队列的实现

死信的概念 死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息 进行消费,但某些时候由于特定的原因导致…

Java 那些诗一般的 数据类型 (1)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

私房菜|私房菜定制上门服务系统|基于springboot+vue私房菜定制上门服务系统设计与实现(源码+数据库+文档)

私房菜定制上门服务系统目录 目录 基于springbootvue私房菜定制上门服务系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能实现 (1)菜品管理 (2)公告管理 (3) 厨师管理 2、用…

四非保研之旅

大家好,我是工藤学编程,虽有万分感概,但是话不多说,先直接进入正题,抒情环节最后再说,哈哈哈 写在开头 我的分享是来给大家涨信心的,网上的大佬们都太强了,大家拿我涨涨信心&#…

Linux 上安装及卸载JDK(包含yum方式)

一、 删除JDK 1、先输入java -version查看是否安装了JDK [rootiZbp117bkiezirqkean6g3Z java-11-openjdk-11.0.21.0.9-2.0.3.al8.x86_64]# java -version openjdk version "11.0.21" 2023-10-17 LTS OpenJDK Runtime Environment (Red_Hat-11.0.21.0.9-1) (build 1…

新版AI系统ChatGPT源码支持GPT-4/支持AI绘画去授权

源码获取方式 搜一搜:万能工具箱合集 点击资源库直接进去获取源码即可 如果没看到就是待更新,会陆续更新上 新版AI系统ChatGPT网站源码支持GPT-4/支持AI绘画/Prompt应用/MJ绘画源码/PCH5端/免授权,支持关联上下文,意间绘画模型…

面向对象详解,面向对象的三大特征:封装、继承、多态

文章目录 一、面向对象与面向过程1、什么是面向过程?2、什么是面向对象? 二、类与对象1. 初识对象2. 类的成员方法2.1 类的定义和使用2.2 成员方法 3. 类和对象4. 魔法方法1. _ _ inint _ _ 构造方法2. _ _ str _ _ 字符串方法3. _ _ lt _ _ 小于符号比较…

基于python社交网络大数据分析系统的设计与实现

项目:基于python社交网络大数据分析系统的设计与实现 摘 要 社交网络大数据分析系统是一种能自动从网络上收集信息的工具,可根据用户的需求定向采集特定数据信息的工具,本项目通过研究爬取微博网来实现社交网络大数据分析系统功能。对于采集…

十二、通过色彩空间转换进行更换图片背景

项目功能实现&#xff1a;对一张白色背景的图片进行更换成蓝色背景&#xff0c;类似抠图更换背景操作 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 inrange.h #pragma once#include<opencv2/opencv.hpp>using namespace cv;class INRANGE{ public:v…

leetcode hot100组合综合四

本题中&#xff0c;是要求nums中求的总和为target的排列数&#xff0c;因为题中说了&#xff0c;元素顺序不同&#xff0c;则可以视为不同的结果之一。 所以&#xff0c;根据对背包问题的总结&#xff0c;本题中元素可以重复使用&#xff0c;是完全背包并且需要求排列数&#…

我是怎么用静态IP代理为Google账号保驾护航的

我为何要使用到静态IP代理服务 我是一名IT从业者&#xff0c;在很多年前就加入了一家跨国软件公司&#xff0c;日常需要在全世界各地跟甲方沟通&#xff0c;负责的工作中重要的一块就是Google广告&#xff0c;为此公司还特意给配置了一台笔记本电脑。 目录 我为何要使用到静态…

教学设计与课堂教学的关系是什么

当你走进教室&#xff0c;是否曾思考过这背后的精心策划&#xff1f;每一堂课的呈现&#xff0c;都源于细致的教学设计。那么&#xff0c;教学设计与课堂教学之间&#xff0c;又隐藏着怎样的秘密呢&#xff1f; 教学设计&#xff0c;就像是一部剧本&#xff0c;为演员&#xf…

Puppeteer 使用实战:如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客(一)

文章目录 效果展示说明利用工具整体思路Puppeteer 使用笔记保持登录状态打开新的页面点击 dialog跳转页面设置页面可见窗口大小寻找元素等待元素出现 整体代码 效果展示 说明 看了看网上很少做这个功能&#xff0c;但是我有这个需求&#xff0c;就抽出时间写了个简单的工具目前…

preCICE流固耦合仿真资料整理

preCICE The coupling library for partitioned multi-physics simulations 资料 Tutorials preCICE—多物理场耦合工具介绍 My First Fluid-Solid Interaction Case CalculiX 流固耦合&#xff08;FESIM有限元分析&#xff09; Coupling with preCICE by Gerasimos Chourdak…

k8s-配置与存储-配置管理

文章目录 一、配置存储1.1 ConfigMap1.1.1.基于文件夹的创建方式1.1.2指定文件的创建方式1.1.3 配置文件创建configmap 1.2 Secret1.2.1Secret的应用与Docker仓库 Secret设置1. Kubernetes 中的 Secrets&#xff1a;创建 Secret 示例&#xff1a;将 Secret 挂载到 Pod 中的示例…

URL、DNS过滤,AV---防火墙综合实验

拓扑图 该实验之前的配置请看我的上一篇博客&#xff0c;这里仅配置URL、DNS过滤&#xff0c;AV 需求 8&#xff0c;分公司内部的客户端可以通过域名访问到内部的服务器 这次的拓扑图在外网多增加了一个DNS服务器和HTTP服务器 DNS服务器IP&#xff1a;40.0.0.30 HTTP服务器…

Pandas快问快答16-30题

16. 如何对一个Pandas数据框进行聚合操作? 聚合操作是数据处理中的一种重要方式&#xff0c;主要用于对一组数据进行汇总和计算&#xff0c;以得到单一的结果。在聚合操作中&#xff0c;可以执行诸如求和、平均值、最大值、最小值、计数等统计操作。这些操作通常用于从大量数…