Go语言学习Day1:什么是Go?

news2024/12/24 2:08:49

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪)
创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)

目录

      • 1、走近Go
        • ①Go语言的Logo
        • ②Go语言的创始人
        • ③Go语言的发展史
      • 2、Go语言的优势
        • ①Go语言的特性与优势
        • ②有哪些公司在用Go?
        • ③使用Go语言开发的项目
        • ④Go语言常用库
      • 3、Go环境搭建
        • ①官网下载go
        • ②下载好后
        • ③配置环境变量
      • 4、测试(Hello World!)

1、走近Go

①Go语言的Logo

Go语言,通常被称为Golang,是一种高效、静态类型的编程语言,旨在简化多核心、网络编程及大型软件项目的开发。Go语言的设计注重简洁性、高效编译和执行速度以及高效的并发处理能力。

image-20240321224411896

②Go语言的创始人

Go语言由Robert Griesemer、Rob Pike和Ken Thompson在2007年开始设计,随后在2009年正式对外公开。这三位都是在谷歌工作的知名计算机科学家:

  • Robert Griesemer:曾参与Java HotSpot虚拟机的开发。
  • Rob Pike:Unix团队的成员,同时也是UTF-8字符编码的共同设计者。
  • Ken Thompson:Unix操作系统的共同发明人,同时也是著名的编程语言B和C的开发者。
③Go语言的发展史
  • 2007年:Go语言的构思和初步设计开始。
  • 2009年11月:Go语言被公开发布,标志着Go语言开源社区的开始。
  • 2012年:Go 1.0正式发布,这是Go语言的第一个稳定版本,为Go语言的发展奠定了基础。
  • 随后几年:Go语言持续发展,版本迭代速度稳定。社区和第三方库的生态也逐渐丰富起来。
  • 2015年:Go语言开始被广泛应用于商业和开源项目中,特别是在微服务、云计算和大数据处理领域。
  • 至今:Go语言继续增长其在开发者中的受欢迎程度,特别是在容器化(如Docker)、云服务(如Kubernetes)等现代计算领域。

Go语言的设计和发展史体现了它的目标:提供一种能够充分利用现代硬件架构的编程语言,同时让编程更加高效和愉快。Go语言简洁的语法、出色的并发支持和高效的性能,使其成为了当前软件开发领域的一个重要选择。

2、Go语言的优势

①Go语言的特性与优势

Go语言具有许多引人注目的特性和优势,使其成为开发者和公司的首选语言之一:

  1. 简洁、清晰的语法:Go语言的设计理念是简单和高效,这让新手容易上手,同时让经验丰富的开发者能够快速理解和修改代码。
  2. 并发编程支持:Go语言的并发模型是它的一大亮点。通过goroutines(轻量级线程)和channels(用于线程间的通信),Go让并发编程变得简单而直观。
  3. 静态类型语言:虽然编写起来几乎和动态类型语言一样自然,但Go是静态类型的,这意味着更早的错误发现和更好的性能。
  4. 强大的标准库:Go的标准库包含了大量用于处理网络、并发、数据解析、文本处理等的库,这些都是“开箱即用”的。
    在这里插入图片描述
②有哪些公司在用Go?

Go语言在许多知名公司中得到应用,包括但不限于:

  • Google:作为Go语言的诞生地,Google在其许多项目中使用Go,包括Docker和Kubernetes。
  • Uber:Uber使用Go语言来处理其高负载的地理位置服务和其他微服务。
  • Twitch:Twitch使用Go语言来处理其实时聊天系统中的高并发。
  • Dropbox:Dropbox使用Go来处理后端服务,特别是在处理大量的文件同步任务时。
  • Netflix:Netflix使用Go语言在其服务器端应用程序中实现高性能和高并发。
    在这里插入图片描述

国内的,比较有名的例如字节跳动等大厂也有在使用Go。

③使用Go语言开发的项目

一些著名的用Go语言开发的项目包括:

  • Docker:一个开源项目,用于自动化应用程序的部署在轻量级的容器中,它使得应用程序的部署更加简单和高效。
  • Kubernetes:一个由Google发起的开源平台,用于自动部署、扩展和管理容器化应用程序,是容器化应用管理的事实标准。
  • Prometheus:一个开源的系统监控和警报工具包,它使用Go语言开发,专为可靠性和高效性设计。
  • Golang Gin:一个高性能的Web框架,提供了一组丰富的功能,用于快速开发Web应用程序或微服务。
    在这里插入图片描述

Go语言凭借其出色的性能、并发处理能力和简洁的语法,成为了现代软件开发中的一个重要工具,特别是在云计算、微服务架构和大数据处理等领域。

④Go语言常用库

Go语言的标准库与Python等编程语言类似,以包的方式提供支持,下表列出了Go语言标准库中常见的包及其功能。

Go语言标准库包名功 能
bufio带缓冲的 I/O 操作
bytes实现字节操作
container封装堆、列表和环形列表等容器
crypto加密算法
database数据库驱动和接口
debug各种调试文件格式访问及调试功能
encoding常见算法如 JSON、XML、Base64 等
flag命令行解析
fmt格式化操作
goGo语言的词法、语法树、类型等。可通过这个包进行代码信息提取和修改
htmlHTML 转义及模板系统
image常见图形格式的访问及生成
io实现 I/O 原始访问接口及访问封装
math数学库
net网络库,支持 Socket、HTTP、邮件、RPC、SMTP 等
os操作系统平台不依赖平台操作封装
path兼容各操作系统的路径操作实用函数
pluginGo 1.7 加入的插件系统。支持将代码编译为插件,按需加载(一个完整的go环境是很大也,只放需要的部分)
reflect语言反射支持。可以动态获得代码中的类型信息,获取和修改变量的值
regexp正则表达式封装
runtime运行时接口
sort排序接口
strings字符串转换、解析及实用函数
time时间接口
text文本模板及 Token 词法器

3、Go环境搭建

①官网下载go

https://go.dev/dl/

image-20240320231732608

②下载好后

双击安装包,一直下一步进行安装。

之后在控制台窗口输入“go version”可查看Go版本,检测是否安装成功。

image-20240320233504140

③配置环境变量

Go需要一个安装目录,还需要一个工作目录。即GOROOT、和GOPATH。其中GOROOT即为GO的安装目录。

image-20240320233600870

GOPATH即为存储Go语言项目的路径,可以自己进行设值,我放在了GoWorks自己建的,里面需要包含src、pkg、bin三个目录。

image-20240320234328112

如果你下载的开发工具没有这些识别项,需要检查环境变量是否配置了Goworks。

image-20240320233639282

如果是安装包安装的,系统环境变量自动配置的,如果压缩包安装,需要在PATH配置Go的命令。

image-20240320233704300

最后,打开控制台,输入命令go env查看是否配置成功。

image-20240320233750996

此时go环境搭建完成。

之后进官网下载Go语言IDE

①GoLand官网

image-20240320233935813

②安装

点击Download下载之后,一路下一步安装,基本上没太大需要改动的地方。

一般需要改动的地方在于安装目录。

安装好后,打开界面如下:

image-20240320234140012

4、测试(Hello World!)

写一个Hello World测试一下是否配置成功:

package main

//用于引入 Go 语言的 fmt 包。
//fmt 包含有格式化 I/O(输入/输出)的函数,类似于 C 语言中的 printf 和 scanf,或者是 Python 中的 print 函数。
//例如:
//fmt.Println() 用于打印输出,同时在末尾加上换行符。
//fmt.Printf() 允许格式化字符串输出。
//fmt.Scanln() 等函数用于从标准输入读取。
import "fmt"

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

image-20240320234451361

补充:常用的几种Print方式

1.Print

//输出到控制台(不接受任何格式化,它等价于对每一个操作数都应用 %v)
fmt.Print(str)

2.Println

//输出到控制台并换行
fmt.Println(tmp)

3.Printf

var a int = 1
var b int = 2
var c int = 3
只可以打印出格式化的字符串。只可以直接输出字符串类型的变量(不可以输出整形变量和整形 等)
fmt.Printf("%d",a)
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)

在 Printf中,有一些常用的格式化占位符,大家根据自己日常编程经验,记住常用的几个就行,其余的用到的时候再行查找:

  • %v 以默认的方式打印变量的值
  • %T 打印变量的类型
  • %s 正常输出字符串
  • %t 打印true或false
  • %p 带0x的指针
  • %d 整型
  • %#p 不带0x的指针
  • %o 不带零的八进制
  • %#o 带零的八进制
  • %x 小写的十六进制
  • %X 大写的十六进制
  • %#x 带0x的十六进制
  • %U 打印Unicode字符
  • %#U 打印带字符的Unicode
  • %b 打印整型的二进制
  • %q 字符串带双引号,字符串中的引号带转义符
  • %f (=%.6f) 6位小数点
  • %e (=%.6e) 6位小数点(科学计数法)
  • %g 用最少的数字来表示
  • %.3g 最多3位数字来表示
  • %.3f 最多3位小数来表示

很感谢你能看到这里,如有相关疑问,还请下方评论留言。
Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)
希望本篇内容能对大家有所帮助,如果大家喜欢的话,请动动手点个赞和关注吧,非常感谢你们的支持!

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

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

相关文章

excel文件可以转成word文件吗?汇帮PDF转换器帮你实现excel转word

将Excel文件转换为Word文档是一个相对简单的任务,但在执行过程中需要注意一些细节,以确保转换后的文档格式正确、内容清晰。下面将详细介绍用汇帮PDF转换器将Excel转Word的步骤和注意事项。 一、Excel文件准备 在进行转换之前,首先确保Excel…

软考高级:UML 图-状态图概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

科研学习|论文解读——通过调查实验了解公民对政府财政信息的认知(GIQ,2022)

原文题目 Understanding citizens perception of government fiscal information through a survey experiment 摘要 州和地方政府定期向公众披露财务信息,以便公开承认政府当前的财务状况。此类披露的目的是实现问责制并让公民了解政府的财务决策。(背景&#xff0…

MySQL之索引与事务

一 索引的概念 一种帮助系统查找信息的数据 数据库索引 是一个排序的列表,存储着索引值和这个值所对应的物理地址无须对整个表进行扫描,通过物理地 址就可以找到所需数据是表中一列或者若干列值排序的方法 需要额外的磁盘空间 索引的作用 1 数据库…

mysqly索引(explain 执行计划)

关键词 执行计划 EXPLAIN 语句查看mysql 优化后的语句 show warnings;EXPLAIN 执行后,各列的含义 要点: select_type 如何查询 表type 如何查询 行key 如何使用 索引key_len 索引 使用多少rows 行 预计使用多少extra 表 的额外信息 1.id id列的编…

Moonsec_Projet_7

Moonsec_Projet_7 1、基础介绍 1.1 网络拓扑图 主机账号密码网卡IPWindows Server 2016administrator!#QWE123vmnet17(web) | vmnet18192.168.0.144(www.moonlab.com) | 10.10.1.131Windows Server 2012administrator!#QWEasdvmnet18 | vmnet1910.10.1.130 | 10.10.10.166Win…

笔记本电脑开机黑屏没反应怎么办?教你逐一排查问题

笔记本电脑是我们日常工作和学习中不可或缺的工具,但有时候在开机时可能会遇到黑屏无反应的问题,这给我们的使用带来了困扰。然而,不用担心,通常情况下,这种问题是可以解决的。在本文中,我们将介绍三种常见…

Redis入门到入坑(一)

Redis入门到入坑(一) Redis缓存入门简介Redis初始操作Redis数据存储操作 Redis常用数据类型简介String类型操作实践Hash类型应用实践List类型应用实践Set类型应用实践 Java中操作redis准备工作Jedis的应用快速入门实现RedisTemplate应用项目工程实践 Red…

【LeetCode: 433. 最小基因变化 + BFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

YOLOV5 部署:cuda和cuDNN安装

1、前言 TensorRT 的安装需要配合cuda的使用,所以这里需要安装cuda和cudnn用于加速推理 TensorRT 就是神经网络专门用来加速的框架 之前训练yolov5项目的时候,我们只是配置了torch的GPU环境,没有专门安装cuda和cudnn,因为简单的训练、推理没必要cuda加速。 torch的GPU配置…

利用matplot绘制折线图(详细版-有示例数据)

对于五组数据,绘制折线图,添加有图例、不同折线的颜色等,如下图所示: python代码: import matplotlib.pyplot as plt import numpy as np# 定义数据 data [[1, 2, 3, 4, 5, 6, 7, 8], # 数据1[2, 2, 4, 4, 5, 5, 6,…

Spring Web MVC入门(6)

应用分层 在开发的过程中, 我们会发现, 程序的代码有时会很"杂乱", 如果后面的项目更大了, 那就会更加地杂乱无章(文件乱, 代码内容乱). 也基于此, 接下来让我们来学习一下应用分层. 也类似于公司的组织架构 公司初创阶段, 一个人身兼数职, 既做财务, 又做人事,还有…

十四、ReadWriteLock

ReadWriteLock 读写锁 又叫排他锁 如果使用互斥锁,一个线程在读,其他线程也不能读也不能写 换成读写锁的时候,读线程是读锁,写线程是写锁,写锁是排他的 在多线程大大提高效率,当一个线程在读的时候&…

当内外网的域名相同时,如何在外网解析同域名的网址

当内部网络和外部网络存在相同的域名,并且希望内部用户通过内部DNS服务器解析到外部网络上的该域名对应的公网IP地址时,需要在内部DNS服务器上采取一些特殊配置策略来实现这一目标。以下是一种通用的解决方案: 条件转发(Condition…

MT1490 修改字符串

原题链接:https://www.matiji.net/exam/brushquestion/490/778/B3FCFEC101BD05189BB74D522E019504 输入1个字符串, 如果其中小写字符多于大写字符,则将其全部转换为小写字符,如果大写字符多于小写字符,则全部转换为大写字符。 输入格式&…

Oracle数据库 利用RMAN备份

利用RMAN备份讨论 运用RMAN进行备份 运用RMAN进行还原与恢复 RMAN的日常管理 RMAN的恢复目录 一、RMAN的概念与体系结构 Recovery Manager(RMAN)是一种用于备份(backup)、还原(restore)和恢复(recover) 数据库的 Oracle 工具。RMAN只能用于ORACLE…

重磅|国家能源局开展配电网安全风险管控重点行动

据国家能源局3月21日消息,为紧扣新形势下电力保供和转型目标,聚焦配电网安全运行、供电保障、防灾减灾和坚强可靠等方面安全风险,推动解决城乡配电网发展薄弱等问题,全面提升配电网供电保障和综合承载能力,国家能源局决…

Linux东方通下载及使用

解压文件 mkdir /usr/local/java 加压包拖进去 vi /etc/profile 复制路径修改路径 export JAVA_HOME/usr/local/java/jdk1.8.0_151 export CLASSPATH.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH$PATH:${JAVA_HOME}/bin 进入…

✅让我们用AI制作一个漂亮的头像吧

头像 头像是指在互联网上用于代表个人或实体的图像。在社区中,头像通常用于标识和区分用户,是用户身份的象征。 社区的头像有多种意义,不限于以下几点: 身份标识:社区头像可以让用户在互联网上更好地代表自己,帮助用…

Mamba 基础讲解【SSM,LSSL,S4,S5,Mamba】

文章目录 Mamba的提出动机TransformerRNN Mama的提出背景状态空间模型 (The State Space Model, SSM)线性状态空间层 (Linear State-Space Layer, LSSL)结构化序列空间模型 (Structured State Spaces for Sequences, S4) Mamba的介绍Mamba的特性一&#…