Golang简介与基本语法介绍

Go语言(通常称为Golang)是由Google开发的一种静态强类型、编译型、并发性强的编程语言。Go语言的设计初衷是为了提高大型软件系统的开发效率,并解决其他编程语言在处理多核处理器、网络系统和大型代码库时遇到的一些问题。

一、Go语言的特点

  1. 简洁、快速、安全:Go语言的语法简洁,编译速度快,内置垃圾回收机制,内存安全。
  2. 并发支持:Go语言原生支持并发,这是通过Goroutines和Channels实现的。Goroutines是由Go运行时管理的轻量级线程,Channels则用于在Goroutines之间安全地传递数据。
  3. 标准库:Go拥有一个丰富的标准库,涵盖了从I/O操作、文本处理到网络通信等多个领域。
  4. 工具链:Go提供了完整的工具链,包括格式化工具gofmt、包管理工具go get、测试工具等。

二、基本语法

1. 包声明

Go语言的每个文件都属于一个包,而程序运行的入口是main包:

package main
2. 导入包

使用import关键字导入所需的包:

import "fmt"
3. 函数定义

使用func关键字定义函数,main函数是程序的入口点:

func main() {fmt.Println("Hello, World!")
}
4. 变量声明

Go语言中可以使用var关键字声明变量,也可以使用:=语法糖直接初始化变量:

var x int = 10
y := 20
5. 控制结构

Go语言支持常见的控制结构,如ifforswitch等:

if x > 0 {fmt.Println("x is positive")
}for i := 0; i < 10; i++ {fmt.Println(i)
}switch y {
case 10:fmt.Println("y is 10")
default:fmt.Println("y is not 10")
}
6. 函数

Go语言支持返回多个值的函数:

func add(x int, y int) (int, int) {return x + y, x - y
}
7. 并发

使用go关键字创建一个新的Goroutine,使用chan关键字创建一个新的Channel:

func say(s string) {for i := 0; i < 5; i++ {fmt.Println(s)}
}func main() {go say("world")say("hello")
}

示例程序HelloWorld!

下面是一个简单的Go程序示例,它定义了一个main包,导入了fmt包用于输出,然后在main函数中输出"Hello, World!":

 

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

要运行Go程序,可以将上述代码保存为.go文件,然后使用go run命令执行。

三、Go的安装下载过程

安装Go语言环境是开始学习和开发Go程序的第一步。Go的安装过程非常简单,官方提供了各个平台(Windows、macOS、Linux)的安装包。以下是基本的下载和安装步骤:

1. 下载Go语言安装包

首先,访问Go语言的官方网站下载页面:https://golang.org/dl/

在这个页面上,你可以找到适用于不同操作系统的Go语言安装包。选择与你的操作系统相匹配的版本进行下载。例如,如果你使用的是Windows系统,就下载Windows版本的安装包。

2. 安装Go语言

Windows:
  1. 双击下载的.msi文件开始安装。
  2. 跟随安装向导的指示完成安装。安装向导会要求你接受许可协议,选择安装位置等。
  3. 完成安装后,你可以打开命令提示符(cmd)并输入go version来检查Go是否正确安装。如果系统返回了Go的版本信息,说明安装成功。
macOS:
  1. 打开下载的.pkg文件开始安装。
  2. 跟随安装向导的指示完成安装过程。
  3. 安装完成后,打开终端(Terminal)并输入go version来验证安装。如果看到Go的版本信息,表示安装成功。
Linux:

对于Linux用户,可以使用包管理器安装Go,或者下载.tar.gz文件手动安装。

  • 使用包管理器安装(以Ubuntu为例)

    打开终端并输入以下命令:

  • sudo apt update
    sudo apt install golang-go
    

    手动安装

  • 下载.tar.gz文件。

  • 打开终端,使用tar命令解压文件到/usr/local目录:

sudo tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz

其中$VERSION$OS$ARCH需要替换为下载文件的相应部分。

将Go的bin目录添加到PATH环境变量中:

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

通常,你会希望将这行命令添加到你的~/.profile~/.bashrc文件中,以便每次登录时自动设置。

3. 验证安装

无论使用哪种操作系统,都可以通过在终端或命令提示符中输入以下命令来验证Go语言是否正确安装:

go version

如果系统返回了Go的版本信息,如go version go1.15.6 linux/amd64,则表示Go已成功安装在你的系统上。

4. 配置工作区

Go语言有一个特定的工作区结构。从Go 1.11版本开始,你可以在任何目录中使用Go Modules进行项目管理,这使得设置GOPATH环境变量变得不再必要。但了解它仍然有助于理解一些旧项目的结构。

  • GOPATH:这是你的Go工作区目录,所有的Go代码都将存放在此目录下。你可以将其设置为任何你喜欢的目录。例如,在Unix系统中,你可以将其添加到~/.bashrc

export GOPATH=$HOME/go

     GOBIN:这是编译后的二进制文件存放的位置,通常是$GOPATH/bin。将其添加到PATH中,可以直接运行这些二进制文件。

export PATH=$PATH:$GOPATH/bin

完成这些步骤后,你就成功设置了Go语言的开发环境,可以开始Go语言的学习和开发了。 

Go语言以其简洁的语法、出色的并发支持和丰富的标准库而受到开发者的青睐。它适用于开发高性能的网络服务器、分布式系统、云服务等。希望这个简介能帮助你开始学习Go语言。

 

 

 

 

 

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

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

相关文章

防止 服务器 被爆破 登录的 方法

防止 服务器 被爆破 登录的 方法 Centos8防止云服务器被爆破登录的应对办法 https://blog.csdn.net/qq_64573330/article/details/126948166

【牛客】SQL136 每类试卷得分前3名-窗口函数

描述 现有试卷信息表examination_info&#xff08;exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间&#xff09;&#xff1a; idexam_idtagdifficultydurationrelease_time19001SQLhard602021-09-01 06:00:0029002SQLhard602021-09…

请解释Netty中的Pipeline和ChannelHandler,以及它们是如何工作的?如何在Netty中实现消息的编解码?有哪些常用的编解码器?

请解释Netty中的Pipeline和ChannelHandler&#xff0c;以及它们是如何工作的&#xff1f; 在Netty中&#xff0c;Pipeline和ChannelHandler是两个核心概念&#xff0c;它们共同协作来处理网络事件和数据流。 Pipeline&#xff08;管道&#xff09; Pipeline可以看作是一个处理…

ardupilot 及PX4姿态误差计算算法对比分析

目录 文章目录 目录摘要1.APM姿态误差计算算法2.PX4姿态误差计算算法3.结论摘要 本节主要记录ardupilot 及PX4姿态误差计算算法差异对比过程,欢迎批评指正。 备注: 1.创作不易,有问题急时反馈 2.需要理解四元物理含义、叉乘及点乘含义、方向余弦矩阵含义、四元数乘法物理含…

sklearn函数:train_test_split(分割训练集和测试集)

函数的功能是分割训练集和测试集 函数中参数的用法&#xff1a; 1. test_size&#xff1a;float or int, defaultNone 测试集的大小&#xff0c;如果是小数的话&#xff0c;值在&#xff08;0,1&#xff09;之间&#xff0c;表示测试集所占有的比例&#xff1b; 如果是整数…

java字符流

1、FileWriter写数据 public static void main(String[] args) throws IOException {FileWriter fw new FileWriter("os\\a.txt");fw.write("大得");//数组写法char[] chs {a, b, c, d, e};fw.write(chs);fw.close();}2、FileReader 读数据 public stati…

2024年2核4G服务器优惠价格,选阿里云还是腾讯云?

2核4G云服务器选阿里云还是腾讯云&#xff1f;2核4G服务器多少钱一年&#xff1f;1个月费用价格&#xff1f;腾讯云轻量2核4G5M带宽服务器165元一年、252元15个月、三年756元&#xff0c;阿里云2核4G4M带宽轻量服务器165元12个月、ECS云服务器2核4G配置30元3个月、2核4G5M带宽1…

MySQL 多表查询 连接查询 自连接

介绍 自连接查询&#xff0c;可以是内连接查询&#xff0c;也可以是外连接查询&#xff0c;一句话自己连接自己&#xff0c;一个表当作两个表进行连接。 语法 SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件两个表A说明是同一张表&#xff0c;但是别名不同 案例…

文献速递:深度学习疾病预后--使用深度学习对数字病理图像进行胃癌的准确诊断和预后预测:一项回顾性多中心研究

Title 题目 Accurate diagnosis and prognosis prediction of gastric cancer using deep learning on digital pathological images: A retrospective multicentre study 使用深度学习对数字病理图像进行胃癌的准确诊断和预后预测&#xff1a;一项回顾性多中心研究 01 文献…

OpenMMlab AI实战营第四期培训

OpenMMlab AI实战营第四期培训 OpenMMlab实战营第四次课2023.2.6学习参考一、什么是目标检测1.目标检测下游视觉任务2.图像分类 v.s. 目标检测 二、目标检测实现1.滑窗 Sliding Window2.滑窗的效率问题3.改进思路&#xff08;1&#xff09;消除滑窗中的重复计算&#xff08;2&a…

x6.js 流程图绘制笔记,常用函数

官方参考网站如下&#xff1a;https://antv-x6.gitee.io/zh/docs/tutorial/about 安装x6 输入以下命令 npm install antv/x6 --save 引用插件代码如下&#xff1a; import { Graph } from antv/x6; 创建绘制区域 this.guiX6 new Graph({container: document.querySelect…

【MGR】MySQL Group Replication 背景

目录 17.1 Group Replication Background 17.1.1 Replication Technologies 17.1.1.1 Primary-Secondary Replication 17.1.1.2 Group Replication 17.1.2 Group Replication Use Cases 17.1.2.1 Examples of Use Case Scenarios 17.1.3 Group Replication Details 17.1…

EdgeX Foundry 安全模式安装部署

文章目录 一、安装准备1.官方文档2. 克隆服务器3.安装 Docker4.安装 docker-compose 二、安装部署1.docker-comepse2.启动 EdgeX Foundry3.访问 UI3.1. consul3.2. EdgeX Console EdgeX Foundry # EdgeX Foundryhttps://iothub.org.cn/docs/edgex/ https://iothub.org.cn/docs…

Java IO流详解(史上最全18个案例代码)

每文一句 每想拥抱你一次&#xff0c;天空飘落一片雪&#xff0c;至此雪花拥抱撒哈拉&#xff01; —荷西 一、IO流开篇 1. 概念&#xff1a; IO&#xff08;Input/Output&#xff09;流是Java中用于处理输入和输出数据的机制。它允许程序与外部设备&#xff08;如文件、网络…

基于springboot的新闻稿件管理系统论文

新闻稿件管理系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了新闻稿件管理系统的开发全过程。通过分析新闻稿件管理系统管理的不足&#xff0c;创建了一个计算机管理新闻稿件管理系统的方案。文章介绍了新…

适用于ZigBee应用的JN5168/001K、JN5188HN、JN5188THN/001Z、JN5189THN超低功耗射频微控制器MCU

一、JN5168/001K 适用于ZigBee应用的超低功耗、高性能无线微控制器 JN5168是超低功耗、高性能无线微控制器&#xff0c;适用于ZigBee应用&#xff0c;它具有256kB嵌入式闪存、32 kB RAM&#xff0c;无需外部存储器即可进行OTA升级。32位RISC处理器可通过不同宽度指令、多级指令…

稀碎从零算法笔记Day5-LeetCode:多数元素

题型&#xff1a;数组、计数、排序、STL函数、查找众数 链接&#xff1a;169. 多数元素 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 题目描述 给定一个大小为 n …

win11更新后切换桌面有了动画效果,如何单独关闭这个动画效果

按住Windows&#xff0b;R键&#xff0c;输入sysdm.cpl并按Enter。 转到“高级”选项卡&#xff0c;单击“性能”部分的“设置”按钮。 接下来&#xff0c;在“视觉效果”页面中&#xff0c;单击“自定义”&#xff0c;然后取消选中&#xff1a;对窗口内的控件和元素进行动画处…

虾皮API在个性化推荐系统中的应用

虾皮&#xff08;Shopee&#xff09;API在个性化推荐系统中的应用可能涉及多个方面&#xff0c;如商品推荐、用户行为分析、广告投放等。但具体的API使用方法和代码实现会因虾皮API的具体接口和功能而有所不同。 以下是一个简化的示例&#xff0c;展示如何使用一个虚构的虾皮A…

【牛客】SQL141 试卷完成数同比2020年的增长率及排名变化-窗口函数

描述 现有试卷信息表examination_info&#xff08;exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间&#xff09;&#xff1a; idexam_idtagdifficultydurationrelease_time19001SQLhard602021-01-01 10:00:0029002Chard802021-01-0…