【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 main

import "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的可执行文件

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

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

相关文章

【计算机网络】UDP协议

UDP的结构 我们学习一个协议最主要的就是理解它的报文格式,对于UDP协议来说 我们看下面的这张图。 16位UDP长度,表示整个数据报(UDP首部UDP数据)的最大长度。UDP报文长度占两个字节,16位表示的数据范围(0-…

Java学习之路 —— Day3(内部类、枚举、泛型、API)

文章目录 1. 内部类2. 枚举3. 泛型 1. 内部类 成员内部类 就是类中的一个普通成员,类似普通的成员方法、成员变量。(套娃) public class Outer {public class Inner {private String name;public static String school;public String getNa…

爆火的迅雷网盘推广,一手云盘app拉新推广渠道必备项目 学习资料

迅雷网盘是目前几个主流网盘拉新推广之一 都可以通过”聚量推客“申请 目前主流的为:夸克网盘拉新、uc网盘推广、迅雷网盘,但是由于阿里的原因 夸克目前不对外开放名额,需要等待,取而代之主流的云盘推广就是迅雷网盘了 聚量推客…

linux基础知识

一、Linux权限详解 Linux的文件权限有以下设定: Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。 Linux下权限的属组有 拥有者 、群组 、其它组 三种。每个文件都可以针对这三个属组(粒度)&#x…

bulldog靶机复现

注:个人笔记,有点简陋,仅供参考。 准备:把kali和靶机设置为同一网段(NAT) 信息搜集 主机扫描 nmap -sP -T4 10.4.7.0/24 扫描出靶机IP为:10.4.7.134 扫描端口、服务 nmap -A -T4 -p- 10.4.…

VRRP(虚拟路由器冗余协议)标准协议工作机制与优势介绍

VRRP标准协议 文章目录 VRRP标准协议简介VRRP标准协议基本概念VRRP标准协议工作机制主备选举主备倒换非抢占模式抢占模式 VRRP标准协议技术优势VRRP典型组网单备份组主备备份多备份组负载分担 推荐阅读 VRRP标准协议简介 VRRP(Virtual Router Redundancy Protocol…

怎么阅读芯片源代码(rtl)

part one 主要的原则。 一个rtl可以是这样的: 经常大家习惯于算法和数据结构。对于设计的部分,落实不一定多。 另外一个rtl也可以是这样的: 所以从不同的层面来讲,一个Rtl有不同的表述。 首先大概把所有的部分浏览一遍&#x…

碳交易机制下考虑需求响应的综合能源系统优化运行(附带Matlab程序)

碳交易机制下考虑需求响应的综合能源系统优化运行(附带Matlab程序) 仿真平台:MATLABCPLEX 使用的是yalmipcplex求解器完成求解 资源地址: 碳交易机制下考虑需求响应的综合能源系统优化运行(附带Matlab程序&#xff09…

CSRF 漏洞实战

CMS创建新用户 方法&#xff1a;攻击者可以利用 XSS 触发 CSRF 攻击。因为&#xff0c;可以利用 JS 发送 HTTP 请求。经过研究受害网站的业务流程&#xff0c;可以构造如下代码&#xff1a; 代码&#xff1a; <script> xmlhttp new XMLHttpRequest(); xmlhttp.open(&qu…

安装DevEco Studio时,遇到的ohpm报错(解决)

如上图所示&#xff0c;我试了网上的各种办法&#xff0c;包括官网的文档&#xff0c;运行init.bat也不行。 接下来我说一下我的办法&#xff1a; 我从官网下载安装包后&#xff0c;将bin文件添加在了环境变量里&#xff08;最终安装的位置&#xff0c;但是因为他会自己下载所…

【运维必看】2023年常见运维面试题汇总,助你拿下offer!

IT运维面试问题总结-基础服务、磁盘管理、虚拟平台&#xff01; 基础服务—— 1、简述Linux中常见的系统服务&#xff0c;其作用分别是&#xff1f; 常见的系统服务及其作用有&#xff1a; ●NTP/Chrony&#xff1a;用于时钟同步&#xff1b; ●DHCP&#xff1a;动态主机配…

MySQL(16):变量、流程控制与游标

变量 在MySQL数据库的存储过程和函数中&#xff0c;可以使用变量来存储查询或计算的中间结果数据&#xff0c;或者输出最终的结果数据。 在 MySQL 数据库中&#xff0c;变量分为 系统变量 以及 用户自定义变量 。 系统变量 变量由系统定义&#xff0c;不是用户定义&#xff…

软件工程分析报告04详细设计说明书——基于Paddle的肝脏CT影像分割

基于Paddle的肝脏CT影像分割系统的详细设计说明书 一、引言 本文档是基于Paddle的肝脏CT影像分割系统的详细设计说明书。本文档旨在对系统的设计、实现以及测试等方面进行详细的阐述&#xff0c;以便于开发人员进行开发和测试工作。 二、概述 肝脏CT影像分割系统是一种医疗影像…

Learning reliable modal weight with transformer for robust RGBT tracking

论文&#xff1a;《Learning reliable modal weight with transformer for robust RGBT tracking》 针对问题&#xff1a;局部线性匹配容易丢失语义信息 解决方法&#xff1a;为了增强特征表示和深化语义特征&#xff0c;分别设计了一种基于改进的Resnet-50的模态权值分配策略…

MATLAB中Filter Designer的使用以及XILINX Coefficient(.coe)File的导出

文章目录 Filter Designer的打开滤波器参数设置生成matlab代码生成XILINX Coefficient(.COE) File实际浮点数的导出官方使用教程 Filter Designer的打开 打开Filter Designer&#xff1a; 方法一&#xff1a;命令行中输入Filter Designer&#xff0c;再回车打开。 方法二&…

漏洞-任意账号注册

一漏洞介绍 1.未验证邮箱/手机号 情景&#xff1a;应用为了方便用户记录用户名&#xff0c;使用邮箱和手机号作为用户名&#xff08;因此很多应用在注册的时候就要求用户填写&#xff0c;多数时候都会给用户发送激活信息&#xff0c;激活后才能登录&#xff09; 缺陷&#xff…

配置DHCP服务器

概述 DHCP(Dynamic Hast Configuration Protocal)就是动态主机配置协议&#xff0c;可以自动配置主机的IP地址、子网掩码、网关及DNS等TCP/IP信息。以DHCP可以有效地降低客户端IP地址配置的复杂度和网络的管理成本。如果路由器能够转发DHCP请求&#xff0c;只需要在一个子网中…

振南技术干货集:深入浅出的Bootloader(4)

注解目录 1、烧录方式的更新迭代 1.1 古老的烧录方式 (怀旧一下&#xff0c;单片机高压烧录器。) 1.2 ISP 与ICP 烧录方式 (还记得当年我们玩过的 AT89S51?) 1.3 更方便的 ISP 烧录方式 1.3.1串口 ISP &#xff08;是 STC 单片机成就了我们&#xff0c;还是我们成就了…

Kubernetes介绍以及Kubernetes快速部署

Kubernetes介绍以及Kubernetes快速部署 文章目录 Kubernetes介绍以及Kubernetes快速部署1.Kubernetes介绍&#xff1a;1.1.Kubernetes简介1.2. Kubernetes应用部署方式演变1.3.Kubernetes功能1.4.Kubernetes工作原理1.5.工作流程1.6.优缺点 2.Kubernetes环境部署2.1.环境说明2.…

EMC-4641C运动控制器固件升级

EMC-4641C运动控制器固件升级 更新前查看运动控制器固件版本 点击打开ESMTPTest_X64R.exe程序 点击搜索&#xff0c;程序自动选择IP为192.168.0.135的运动控制器&#xff08;实际操作时候可能会因为现场情况&#xff0c;IP会有细微不同&#xff09; 点击Connest 等待几秒后在…