一、go入门

go入门

  • Go历史
    • 1.1 诞生时间
    • 1.2 里程碑
    • 1.3 团队核心人员
  • 2. 为什么使用Go
  • 3. 安装Go
  • 5. 入门案例
  • 6. 开发工具

Go历史

1.1 诞生时间

Go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目,即相关员工利用 20% 的空余时间来参与 Go 语言的研发工作。

  • 2007 年 9 月 20 日的下午,在谷歌山景城总部的一间办公室里,谷歌的大佬级程序员 Rob Pike在等待一个 C++ 项目构建的过程中和谷歌的另外两个大佬级程序员 Robert Griesemer和 Ken Thompson进行了一次有关设计一门新编程语言的讨论。
    • 计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
    • 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。
    • 企业运行维护很多c/c++的项目,C/C++程序运行速度虽然很快(因为采用静态编译),但是编译速度却很慢,同时还存在内存泄露的一系列困扰需要解决。

1.2 里程碑

  • 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版本发布
  • 2022年3月15日, Go1.18版本发布
  • 2022年8月02日, Go1.19版本发布
  • 2023年2月01日, Go1.20版本发布
  • 2023年08月08日,Go1.21版本发布
  • 2024年02月06日,Go1.22版本发布

本教程使用当前最新版本1.22进行讲解

1.3 团队核心人员

Ken Thompson(肯·汤普逊):1983年图灵奖、1998年美国国家技术奖得主,他与Dennis Ritchie是Unix系统的原创者。Thompson也发明了C语言、B语言,同时也是C语言的主要发明人。 Rob Pike(罗布·派克): 加拿大人,曾是贝尔实验室的Unix团队和Plan 9操作计划的成员。他与Thompson共事多年,并共创出广泛使用的UTF-8字符编码。(ps:Go语言的图标-gopher 囊地鼠,是Rob Pike老婆制作的) Robert Griesemer(罗伯特·格里泽默):曾协助制作Java的HotSpot编译器,和Chrom浏览器的JavaScript引擎V8.
在这里插入图片描述

2. 为什么使用Go

  1. 简单好记的关键词和语法。轻松上手,简单易学。
  2. 更高的效率。比Java,C++等拥有更高的编译速度,同时运行效率媲美C,同时开发效率非常高。
  3. 生态强大,网络上库很丰富,很多功能使用Go开发非常简单。
  4. 语法检查严格,高安全性。
  5. 严格的依赖管理,go mod命令。
  6. Go拥有强大的编译检查、严格的编码规范和完整的软件生命周期工具,具有很强的稳定性,稳定压倒一切。
  7. 跨平台交叉编译,windows就可以编译出mac,linux上可执行的程序。
  8. 异步编程复杂度低,易维护,GO 语言中 Channel 设计,异步程序写起来非常自然。
  9. 语言层面支持并发,go关键字(协程)使得go的并发效率极高。
  10. 严格的语法规范,所有程序员写出来的代码都是一样的,对大团队来说,非常友好。
  11. Go 的并发、性能、安全性、易于部署等特性,使它很容易成为“云原生语言”。容器和云的使用上非常广

Go语言设计之初,确定了三大原则:简洁性可读性功能性

3. 安装Go

资料中有提供windows的zip包

下载地址:https://go.dev/dl/

下载后,将压缩包解压
在这里插入图片描述

接下来需要配置几个环境变量:

  1. GOROOT:go语言所在的目录,用于全局执行go相关的命令
    在这里插入图片描述
    path中也需要配置,加上值为%GOROOT%\bin的一项。

  2. GOPATH:工作目录,工程代码存放的位置,此目录下,一个文件夹就是一个工程
    在这里插入图片描述
    path中也需要配置,加上值为%GOPATH%\bin的一项。

  3. GOPROXY:代理,由于go需要翻墙使用,需要配置代理,有好心人做了代理
    在这里插入图片描述

go env 可以检查环境变量的配置是否正确

配置完环境变量,我们就可以开始写代码了

5. 入门案例

新建一个文件夹,hello。进入hello目录,运行cmd命令

# 运行下面的命令
go mod init hello

会生成一个go.mod文件,用于管理依赖的。

接下来,写程序

新建man.go

在其中输入以下内容:

// package 定义包名 main 包名
package main

// import 引用库 fmt 库名
import "fmt"

// func 定义函数 main 函数名
func main() {
	// fmt 包名 . 调用 Print 函数,并且输出定义的字符串
	fmt.Print("Hello Golang")
}

运行以下命令:

go run main.go

OK,现在我们入门了~~

6. 开发工具

工欲善其事,必先利其器,这里我们选用GoLand做为我们的开发IDE。(如果已经安装了IDEA,安装Go插件后也可以编Go代码)

这里我使用的是,2022.3.4版本

直接运行即可

注意在设置中,go相关的配置
在这里插入图片描述

因为我比较熟悉Goland,但Goland不是唯一选择,我们也可以选择VSCode
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

客户案例 | Ansys与台积电和微软合作加速光子仿真

Ansys与台积电和微软展开合作,将硅光子器件的仿真和分析速度提高10倍以上 主要亮点 借助使用NVIDIA图形处理单元(GPU)的Microsoft Azure虚拟机,Ansys Lumerical™ FDTD 3D电磁仿真的光子器件仿真速度实现了10倍提升 凭借Azure云…

渲染纹理的玻璃效果

1. 玻璃效果基本原理 要实现玻璃效果,可能会联想到使用透明相关知识来进行制作。透明固然可以制作出玻璃透明的效果,但是它在许多地方有所缺陷,比如: 透明无法表现出复杂的光学效果,玻璃不仅仅是透明的,它…

智慧社区Web解决方案:Spring Boot框架探索

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理基于web的智慧社区设计与实现的相关信息成…

SpringBoot中的Component和ComponentScan注解工作原理

Spring IoC 容器的工作是通过管理对象的生命周期和配置来保持业务逻辑清晰,但是 Spring 容器并不会自动知道要管理哪些 bean。所以我们来告诉 Spring 应该处理哪些 bean 以及如何处理,很简单这就是 Spring 的 Component 和 ComponentScan 注释的作用所在…

Docker 安装sql server 登陆失败

错误: Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate]. Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : Client unable to establish co…

IDEA使用Alibaba Cloud Toolkit插件自动化部署jar包

一、下载插件 二、添加服务器主机 三、填写自己服务器配置 四、添加配置 五、配置说明 六、选择maven打包模块 七、maven打包后的jar包位置配一下 八、点击运行发现成功

sap abap 为何某字段不可以使用统计功能

查看是否字段错误了 以上图为例,wmeng 并不存在于 vbap表中, 而是存在于 vbep 表中,所以改成vbep表就可以成功了

Llama3-Factory模型部署新手指南

一、介绍 为了保持其公司在人工智能开源大模型领域的地位,社交巨头Meta推出了旗下最新开源模型。当地时间4月18日,Meta在官网上宣布公布了旗下最新大模型Llama 3。目前,Llama 3已经开放了80亿(8B)和700亿(…

谷歌-BERT-第四步:模型部署

1 需求 需求1:基于gradio实现大模型的WEB UI交互界面 2 接口 3 示例 import gradio as gr from transformers import *classifier pipeline("text-classification", model"./model", tokenizer"./model")gr.Interface.from_pipel…

个性化图像生成新SOTA!阿里开源MIP-Adapter,可将无需微调的IP-Adapter推广到同时合并多个参考图像。

今天给大家介绍阿里最近开源的个性化图像生成的新方法MIP-Adapter,将无需微调的预训练模型(IP-Adapter)推广到同时合并多个参考图像。MIP-Adapter会根据每个参考图像与目标对象的相关性来给这些图像分配不同的“重要性分数”。这样&#xff0…

借老系统重构我给jpa写了个mybatis风格的查询模块

因为公司老系统是用hibernate3开发的,重构自然过渡到使用Spring Data JPA。由于系统中对sql的使用方式还是手动为主,这就造成在service层存在大量的sql拼接方式,后续维护比较困难。 因为怀念以往项目对sql驱动的持久层开发用的mybatis的时光&…

HTB:Bashed[WriteUP]

目录 连接至HTB服务器并启动靶机 1.How many open TCP ports are listening on Bashed? 2.What is the relative path on the webserver to a folder that contains phpbash.php? 3.What user is the webserver running as on Bashed? 执行命令:whoami 4.S…

【前端】如何制作一个自己的网页(8)

以下内容接上文。 CSS的出现,使得网页的样式与内容分离开来。 HTML负责网页中有哪些内容,CSS负责以哪种样式来展现这些内容。因此,CSS必须和HTML协同工作,那么如何在HTML中引用CSS呢? CSS的引用方式有三种&#xff1…

构建后端为etcd的CoreDNS的容器集群(六)、编写自动维护域名记录的代码脚本

本文为系列测试文章,拟基于自签名证书认证的etcd容器来构建coredns域名解析系统。 一、前置文章 构建后端为etcd的CoreDNS的容器集群(一)、生成自签名证书 构建后端为etcd的CoreDNS的容器集群(二)、下载最新的etcd容…

Linux C接口编程入门之ioctl操作

ioctl函数用于系统调用操作特殊文件的底层设备参数。例如终端的许多操作特性可以用ioctl()请求来控制。不能用于read()、write()、open()、close()函数表示的I/O操作通常都能用ioctl表示。 fd参数为某个设备或文件已打开的文件描述符; request参数指定了将在fd上执…

大数据测试:Charles修改响应数据

上一篇大数据测试:Fiddler修改响应数据-CSDN博客 ,有同学反馈有没有Charles的方式修改响应数据,本篇就是Charles修改数据操作步骤,相比较fiddler,Charles相对简单,便捷,我很喜欢 1、背景&…

web网页---新浪网页面

代码&#xff1a; <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>新浪网</title> </head> <style>ul.menu > li{list-style: none; } …

DC系列靶机-DC6

一&#xff0c;环境的搭建 VM17 官网下载 kali 2023.4版 https://mirrors.tuna.tsinghua.edu.cn/kali-images/kali-2023.4/ 靶场文件 https://download.vulnhub.com/dc/DC-5.zip 二&#xff0c;攻略 首先进行主机发现&#xff1b; 接下来进行端口扫描&#xff1b; 开放了2…

手撕数据结构 —— 栈(C语言讲解)

目录 1.认识栈 什么是栈 栈的示意图 2.如何实现栈 3.栈的实现 Stack.h中接口总览 具体实现 结构的定义 初始化栈 销毁栈 入栈 出栈 取栈顶元素 获取有效元素的个数 判断栈是否为空 4.完整代码附录 Stack.h Stack.c 1.认识栈 什么是栈 栈是一种特殊的线性表…

CSS面试真题 part2

CSS面试真题 part2 11、css3新增了哪些新特性&#xff1f;12、css3动画有哪些&#xff1f;13、介绍一下grid网格布局14、说说flexbox&#xff08;弹性盒布局模型&#xff09;&#xff0c;以及使用场景&#xff1f;15、说说设备像素、css像素、设备独立像素、dpr、ppi之间的区别…