【Hello Go】初识Go语言
初识Go语言
- Go语言介绍
- Go语言是什么
- Go语言优势
- Go语言能用来做什么
- Go语言环境安装
- 第一个GO语言程序
- 运行Go语言程序
Go语言介绍
Go语言是什么
go语言是是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言.
- 静态类型:在静态类型语言中 变量的类型在编译期间就被确定 并且在运行时不可以改变 程序员写代码的时候必须要制定变量的类型 java C/C++ go等都是静态强类型语言
- 强类型语言: 强类型语言要求在编程时更加明确和严格的处理数据类型
- 编译型语言:编译型语言指的是在运行程序之前 语言要先从源代码转化为机器可执行码一类的编程语言
- 并发型语言:go语言是一种并发型语言 它原生支持协程 可以更方便的创建和管理
- 垃圾回收机制: go语言原生支持垃圾回收机制 它会识别并回收不再被程序标记和使用的内存 比起C++手动释放内存要方便不少
Go语言优势
- 语言层面上支持并发 这是go语言最大的特色之一 可以充分利用多核 很容易得使用并发
- 内置垃圾回收机制 可以处理大部分情况
- 简单易学 Go语言只有25个关键字 但是它们的功能却很强大 几乎支持你在其他语言中看到的所有特性:继承 重载 多台等
- 丰富的标准库 标准库的功能十分强大 尤其是网络库
- 内置强大的工具 比如gofmt工具 自动格式化代码
- 支持c语言 可以直接利用丰富的c标准库
Go语言能用来做什么
- 服务器编程 包括处理日志 数据打包等
- 网络编程 目前来说这一块的应用最广泛 包括Web应用 Api应用等
- 分布式系统 数据库代理等
Go语言环境安装
大家可以参考这篇博客
Go语言环境安装
第一个GO语言程序
package mainimport "fmt"func main() { fmt.Println("Hello, 世界")
}
需要注意的是 Go语言明确规定了函数的格式 函数和第一个大括号之间 不能换行 否则会报错
我们从这段代码开始 了解Go语言的基本格式
首先来看第一行代码
package main
每个Go语言源文件第一行都是一个package声明 表示该断Go代码所属的包
包是Go语言中最基本的分发单位 也是工程管理中依赖的体现
我们如果要生成一个Go语言的可执行程序 必须要建立一个名字为main的包 并且这个名为main的包中必须要有一个叫做main的函数
Go中的main函数
- Go语言的main函数既没有参数 也没有返回值(别惦记C++的return 0了)
- Go语言的函数必须要遵循大括号不换行 否则会报错
import "fmt"
在包的声明之后是一系列的import语句 用于导入该程序所依赖的包
在目前阶段我们可以暂时理解成相当于C++中的include 但其实不是一个概念
因为我们下面的函数用到了Println函数 所以说我们需要导入fmt包 常见的Go语言包如下
- fmt:用于格式化输入和输出。
- net:提供网络相关的功能,如HTTP、TCP等。
- io:用于处理输入输出流。
- os:提供操作系统相关的功能,如文件操作、环境变量等。
- time:用于处理时间和日期。
- crypto:提供加密算法和工具。
func main() { fmt.Println("Hello, 世界")
}
所有Go语言中的函数都以func作为开头 一个常规的函数定义包含下面的部分
func // 函数名(// 参数) { // 函数语句
}
Go语言的注释和C++类似 都是使用双斜杠 如下图
运行Go语言程序
Go 语言中包含了大量用于处理 Go 语言代码的命令和工具。其中,go 命令就是最常用的一个,它有许多子命令。这些子命令都拥有不同的功能,如下所示。
- build:用于编译给定的代码包或 Go 语言源码文件及其依赖包。
- run:用于编译并运行给定的命令源码文件。
- fmt:用于执行 gofmt 命令以格式化给定代码包中的源码文件。
- clean:用于清除执行其他 go 命令后遗留的目录和文件。
- doc:用于执行 godoc 命令以打印指定代码包。
- env:用于打印 Go 语言环境信息。
- fix:用于执行 go tool fix 命令以修正给定代码包的源码文件中包含的过时语法和代码调用。
- get:用于下载和安装给定代码包及其依赖包(提前安装 git 或 hg)。
- list:用于显示给定代码包的信息。
- install:编译包文件并编译整个程序
- test:用于测试给定的代码包。
- tool:用于运行 Go 语言的特殊工具。
- version:用于显示当前安装的 Go 语言的版本信息。
我们这里演示两个常见的go语言命令
run:用于编译并运行给定的命令源码文件。
我们可以发现 使用go run指令之后 编译运行了整个test.go 源文件 但是并没有生成可执行文件
build:用于编译给定的代码包或 Go 语言源码文件及其依赖包。
我们可以发现使用了Go build指令之后生成了一个test的可执行文件
相关文章:

【Hello Go】初识Go语言
初识Go语言 Go语言介绍Go语言是什么Go语言优势Go语言能用来做什么 Go语言环境安装第一个GO语言程序运行Go语言程序 Go语言介绍 Go语言是什么 go语言是是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言. 静态类型:在静态类型…...

计算机视觉:人脸识别与检测
目录 前言 识别检测方法 本文方法 项目解析 完整代码及效果展示 前言 人脸识别作为一种生物特征识别技术,具有非侵扰性、非接触性、友好性和便捷性等优点。人脸识别通用的流程主要包括人脸检测、人脸裁剪、人脸校正、特征提取和人脸识别。人脸检测是从获取的图…...

【NLP】理解 Llama2:KV 缓存、分组查询注意力、旋转嵌入等
LLaMA 2.0是 Meta AI 的开创性作品,作为首批高性能开源预训练语言模型之一闯入了 AI 场景。值得注意的是,LLaMA-13B 的性能优于巨大的 GPT-3(175B),尽管其尺寸只是其一小部分。您无疑听说过 LLaMA 令人印象深刻的性能,但您是否想知…...

ctyunos 与 openeuler
ctyunos-2.0.1-220311-aarch64-dvd ctyunos-2.0.1-220329-everything-aarch64-dvd glibc python3 对应openEuler 20.03 LTS SP1...
跟着GPT学设计模式之工厂模式
工厂模式(Factory Design Pattern)分为三种更加细分的类型:简单工厂、工厂方法和抽象工厂。在这三种细分的工厂模式中,简单工厂、工厂方法原理比较简单,在实际的项目中也比较常用。而抽象工厂的原理稍微复杂点…...

VScode+python开发,多个解释器切换问题
内容:主要VScode使用多个解释器 环境准备 VScode编辑器,两个版本python解释器 python3.7.2 python3.11.6 问题: 目前我们的电脑安装了python3.7.2、python3.11.6两个解释器,在vscode编辑器中,无法切换解释器使用如…...

c++ 经典服务器开源项目Tinywebserver如何运行
第一次直接按作者的指示,运行sh ./build.sh,再运行./server,发现不起作用,localhost:9006也是拒绝访问的状态,后来摸索成功了发现,运行./server之后,应该是启动状态,就是不会退出,而…...

c++之xml的创建,增删改查
c之xml的创建,增删改查 1.创建写入2.添加3.删除4.修改: 1.创建写入 #include <stdio.h> #include <typeinfo> #include "F:/EDGE/tinyxml/tinyxml.h" #include <iostream> #include <string> #include <Winsock2.…...

【前端开发】JS Vue React中的通用递归函数
目录 前言 一、递归函数的由来 二、功能实现 1.后台数据 2.处理数据 3.整体代码 总结 🙂博主:冰海恋雨. 🙂文章核心:【前端开发】JS Vue React中的通用递归函数 前言 大家好,今天和大家分享一下在前端开发中j…...

【python 生成器 面试必备】yield关键字,协程必知必会系列文章--自己控制程序调度,体验做上帝的感觉 1
python生成器系列文章目录 第一章 yield — Python (Part I) 文章目录 python生成器系列文章目录前言1. Generator Function 生成器函数2.并发和并行,抢占式和协作式2.Let’s implement Producer/Consumer pattern using subroutine: 生成器的状态 generator’s st…...
头哥实践平台之MapReduce基础实战
一. 第1关:成绩统计 编程要求 使用MapReduce计算班级每个学生的最好成绩,输入文件路径为/user/test/input,请将计算后的结果输出到/user/test/output/目录下。 先写命令行,如下: 一行就是一个命令 touch file01 echo Hello World Bye Wor…...
Linux基础知识——tmux和vim
Linux基础知识——tmux和vim 文章目录 Linux基础知识——tmux和vim一、tmux1. 功能2. 结构3. 操作 二、vim功能模式操作 一、tmux tmux配置:~/.tmux.conf修改为如下 set-option -g status-keys vi setw -g mode-keys visetw -g monitor-activity on# setw -g c0-cha…...

Java Web——TomcatWeb服务器
目录 1. 服务器概述 1.1. 服务器硬件 1.2. 服务器软件 2. Web服务器 2.1. Tomcat服务器 2.2. 简单的Web服务器使用 1. 服务器概述 服务器指的是网络环境下为客户机提供某种服务的专用计算机,服务器安装有网络操作系统和各种服务器的应用系统服务器的具有高速…...

Zookeeper 命令使用和数据说明
文章目录 一、概述二、命令使用2.1 登录 ZooKeeper2.2 ls 命令,查看目录树(节点)2.3 create 命令,创建节点2.4 delete 命令,删除节点2.5 set 命令,设置节点数据2.6 get 命令,获取节点数据 三、数…...

索尼RSV文件怎么恢复为MP4视频
索尼相机RSV是什么文件? 如果您的相机是索尼SONY A7S3,A7M4,FX3,FX3,FX6,或FX9等,有时录像会产生一个RSV文件,而没有MP4视频文件。RSV其实是MP4的前期文件,经我对RSV文件…...

pytorch-gpu(Anaconda3+cuda+cudnn)
文章目录 下载Anaconda3安装,看着点next就行比较懒所以自动添加path测试 cuda安装的时候不能改路径如果出现报错,关闭杀毒软件一直下一步就好取消勾选“CUDA”中的“Visual Studio Intergration”一直下一步即可测试安装成功 cudnn解压后将这三个文件夹复…...

解析数据洁净之道:BI中数据清理对见解的深远影响
本文由葡萄城技术团队发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 随着数字化和信息化进程的不断发展,数据已经成为企业的一项不可或缺的重要资源。然而,这…...

efcore反向共工程,单元测试
1.安装efcore需要的nuget <PackageReference Include"Microsoft.EntityFrameworkCore" Version"6.0.24" /> <PackageReference Include"Microsoft.EntityFrameworkCore.SqlServer" Version"6.0.24" /> <PackageRefere…...

利用IP风险画像强化金融行业网络安全防御
在数字化时代,金融行业日益依赖互联网和技术创新,但这也使得金融机构成为网络攻击的主要目标。为了应对日益复杂的网络威胁,金融机构迫切需要采用先进的安全技术和工具。其中,IP风险画像技术成为提升网络安全的一项重要策略。 1.…...

1334. 阈值距离内邻居最少的城市
分析题目两点“阈值距离”、“邻居最少”。 “阈值距离”相当于定了个上界,求节点之间的最短距离。 “邻居最少”相当于能连接的点的数量。 求节点之间的最短距离有以下几种方法: 在这道题当中,n的范围是100以内,所以可以考虑O(n…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...