【Golang入门】简介与基本语法学习

下面是一篇关于Golang新手入门的博客,记录一下。(如果有语言基础基本可以1小时入门)

一、什么是Golang?

Golang(又称Go)是一种由谷歌公司开发的编程语言。它是一种静态类型、编译型、并发型语言,被设计用于构建高效、可扩展和可维护的软件系统。Golang拥有简单的语法、快速的编译速度和良好的性能,因此被越来越多的开发者所喜爱和采用。

二、安装Golang

在开始使用Golang之前,我们需要先安装Golang开发环境。Golang支持Windows、Mac OS X和Linux等多个操作系统平台,你可以根据自己的需求选择相应的版本进行安装。以下是安装步骤:

  1. 打开 Golang官网 ,下载对应系统的安装包。
  2. 双击安装包进行安装,按照提示一步步完成安装过程。

安装完成后,我们可以在命令行中输入 go version 来检查是否安装成功。

三、编写Hello World程序

安装完Golang之后,我们可以尝试编写一个最简单的程序——Hello World。

  1. 创建一个名为 hello.go 的文件,使用文本编辑器打开。
  2. 输入以下代码:
package main import "fmt" func main() { fmt.Println("Hello, World!") }
  1. 保存文件,并在命令行中进入该文件所在目录。
  2. 运行程序,输入命令 go run hello.go

如果一切正常,你应该可以看到输出结果:Hello, World!。恭喜你成功编写了第一个Golang程序!

四、基本语法

接下来让我们来学习一些Golang的基本语法:

4.1 变量

变量是程序中非常重要的概念,它们用于存储数据。在Golang中,我们可以使用 var 关键字声明变量。例如:

var name string = "Alice"

上面的代码声明了一个名为 name 的字符串类型变量,并将其初始化为 "Alice"。我们也可以省略类型,让编译器自动推断出变量类型:

var name = "Alice"

另外,我们还可以使用 := 运算符来简化变量声明和初始化过程:

name := "Alice"

这样就相当于同时声明并初始化了一个名为 name 的字符串类型变量。

4.2 数组和切片

数组是一种固定大小的、同类型的数据结构。在Golang中,我们可以使用以下方式定义一个长度为5的整型数组:

var arr [5]int

注意,数组的长度在创建时需要指定,并且无法改变。我们可以使用下标来访问数组元素:

arr[0] = 1 // 将第一个元素设置为1
fmt.Println(arr[0]) // 输出:1

除了数组,Golang还提供了切片(slice)这种动态大小的数据结构。与数组不同的是,切片的长度可以随着需要而增加或减少。以下是创建和初始化一个切片的例子:

var s []int = make([]int, 5) // 创建一个长度为5的整型切片
s[0] = 1 // 将第一个元素设置为1
fmt.Println(s[0]) // 输出:1

4.3 控制流

在编写程序时,我们通常需要根据不同的条件执行不同的操作。在Golang中,我们可以使用 if、for 和 switch 等语句来控制程序流程。

if 语句用于根据条件执行不同的操作。以下是一个简单的 if 示例:

if age >= 18 {
    fmt.Println("成年人")
} else {
    fmt.Println("未成年人")
}

如果 age 大于等于18,则输出 "成年人";否则输出 "未成年人"

for 循环用于重复执行指定的代码块,可以有多种形式。以下是最常见的 for 循环形式:

for i := 0; i < 5; i++ {
    fmt.Println(i)
}

上面的代码将会输出 0 到 4 的数字。

switch 语句用于根据不同的情况执行不同的操作。以下是一个示例:

switch dayOfWeek {
case "Monday":
    fmt.Println("星期一")
case "Tuesday":
    fmt.Println("星期二")
case "Wednesday":
    fmt.Println("星期三")
default:
    fmt.Println("其他")
}

如果 dayOfWeek 的值为 "Monday",则输出 "星期一";如果为 "Tuesday",则输出 "星期二",以此类推。如果值不匹配任何一个 case,则执行 default 代码块中的语句。

五、并发编程

Golang 是一种并发型语言,它提供了丰富的并发编程工具,使得我们可以轻松地编写高效的并发程序。

在 Golang 中实现并发编程的方式有多种,其中最常用的方式是使用 goroutine 和 channel。goroutine 是由 Golang 运行时管理的轻量级线程,可以在一个程序中同时执行多个任务;channel 用于在 goroutine 之间传递数据。

以下是一个使用 goroutine 和 channel 实现并发计算的示例:

func square(num int, out chan<- int) {
    out <- num * num
}

func main() {
    numbers := []int{1, 2, 3, 4, 5}
    results := make(chan int)

    for _, num := range numbers {
        go square(num, results)
    }

    for i := 0; i < len(numbers); i++ {
        fmt.Println(<-results)
    }
}

这段代码将会对 numbers 列表中的每个数进行平方运算,并输出结果。使用 go 关键字开启的 goroutine 将会异步地执行 square 函数。函数的第二个参数 out 是一个只写的 channel,用于将计算结果发送给主线程;主线程则通过 <-results 接收计算结果并输出。

以上就是一些基本的 Golang 语法和并发编程方法。如果想深入学习 Golang,可以参考官方文档或者其他相关书籍。

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

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

相关文章

【JLink仿真器】盗版检测、连接故障、检测不到芯片问题

【JLink仿真器】盗版检测、连接故障、检测不到芯片问题一、问题描述二、解决方法1、降低驱动&#xff08;解决非法问题以及连接故障&#xff09;2、SWD引脚被锁&#xff08;解决检测不到芯片&#xff09;三、说明一、问题描述 盗版检测&#xff1a;the connected probe appear…

【Linux】网络原理

本篇博客让我们一起来了解一下网络的基本原理 1.网络发展背景 关于网络发展的历史背景这种东西就不多bb了&#xff0c;网上很容易就能找到参考资料&#xff0c;我的专业性欠缺&#xff0c;文章参考意义也不大。这里只做简单说明。 网络发展经过了如下几个模式 独立模式&…

几何算法——4.交线(intersection curve)的表达与参数化、微分性质

几何算法——4.曲面求交的交线&#xff08;intersection curve&#xff09;的表达与参数化、微分性质1 关于曲面求交的交线表达2 交线的微分性质3 交线的参数化4 修正弦长参数化的微分性质1 关于曲面求交的交线表达 两个曲面求交&#xff0c;比较经典的方法是用跟踪法&#xf…

【CSS】绝对定位元素设置 水平 / 垂直 居中 ( 绝对定位元素居中设置 - 先偏移 50% 再回退子元素一半尺寸 | 绝对定位居中设置 )

文章目录一、问题提出二、绝对定位 居中设置1、设置固定尺寸2、先偏移50%再回退固定值三、绝对定位元素 水平 / 垂直 居中一、问题提出 绝对定位 不能通过 设置 margin: auto; 样式的方式 , 设置盒子模型水平居中 ; 相对定位 的 盒子模型 , 并没有脱离标准流限制 , 仍然可以使…

2023-数据质量管理方法总结

一、数据质量保障原则 如何评估数据质量的好坏&#xff0c;业界有不同的标准&#xff0c;阿里主要从4个方面进行评估&#xff1a;完整性、准确性、一致性、及时性&#xff1b; 1.完整性 数据完整性是数据最基础的保障&#xff1b; 完整性&#xff1a;指数据的记录和信息是否…

d2l 文本预处理textDataset

这一节极其重要&#xff0c;重要到本来是d2l的内容我也要归到pyhon封面&#xff0c;这里面class的操作很多&#xff0c;让我娓娓道来&#xff01; 目录 1.要实现的函数 2.读取数据集 3.词元化 4.Vocab类 4.1count_corpus(tokens) 4.2class中的各种self 4.2.1 _token_fr…

KIOPTRIX: LEVEL 4通关详解

环境配置 vulnhub上下载的文件没有vmx 去3的文件里偷一个 记事本打开把所有Kioptrix3_vmware改成Kioptrix4_vmware 然后网卡地址随便改一下 打开后会提示找不到虚拟机,手动选一下就行了 信息收集 漏洞发现 web一上去就是一个登录框 扫路径发现database.sql 但是密码是错的…

Amazon SageMaker简直就是机器学习平台的天花板

一、前言 最近参与了亚马逊云科技【云上探索实验】活动&#xff0c;通过Amazon SageMaker基于Stable Diffusion模型&#xff0c;非常简单快速搭建的第一个AIGC&#xff0c;一开始以为非常复杂&#xff0c;不懂动手操作&#xff0c;但实际上操作非常简单&#xff0c;没有想象中…

【嵌入式Linux】Jetson nano GPIO应用 | 驱动开发 | 官方gpiolib、设备树与chip_driver

GPIO子系统 0.暴露给应用层 应用 $ echo 79 > /sys/class/gpio/export //导出79号gpio 引脚&#xff0c;使得可在应用层访问 $ echo out > /sys/class/gpio/gpio79/direction //设置 为输出 $ echo 1 > /sys/class/gpio/gpio79/value //输出高电平 开灯 $ echo 0…

Spark对正常日志文件清洗并分析

目录 日志文件准备&#xff1a; 一.日志数据清洗&#xff1a; 第一步&#xff1a;数据清洗需求分析&#xff1a; 二.代码实现 2.1 代码和其详解 2.2创建jdbcUtils来连接Mysql数据库 2.3 运行后结果展示&#xff1a; 三、留存用户分析 3.1需求概览 3.2.代码实现 3…

T 级数据量迁移!知名云巨头如何从 Jira 切换至 ONES?

2021 年&#xff0c;Atlassian 旗下 Jira&Confluence 等系列产品 Server 版&#xff08;本地私有化部署版&#xff09;全面停售&#xff0c;并将在 2024 年停止维护&#xff0c;Server 版客户必须迁移至 Cloud&#xff08;云&#xff09;或 Data Center&#xff08;数据中心…

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 逻辑控制器 提前说…

一篇文章让你搞懂TypeScript中的??和?:和?.和!.是什么意思

TypeScript中的??和?:和?.和!.是什么意思&#xff1f;知识回调&#xff08;不懂就看这儿&#xff01;&#xff09;场景复现核心干货???:?.!.知识回调&#xff08;不懂就看这儿&#xff01;&#xff09; 知识专栏专栏链接TypeScript知识专栏https://blog.csdn.net/xsl_…

Scrapy爬虫框架(概念)

Scrapy 入门教程 | 菜鸟教程 (runoob.com) Scrapy是一个快速功能强大的网络爬虫框架 Scrapy的安装 通过 pip 安装 Scrapy 框架: pip install Scrapy 安装后小测&#xff1a; 执行 scrapy ‐h Scrapy不是一个函数功能库&#xff0c;而是一个爬虫框架。 Scrapy架构图(绿线是…

CentOS7 虚拟机 双网卡绑定

一、网卡绑定模式 模式类型特点mode0round-robin&#xff08;平衡轮询策略&#xff09;基于per packet方式&#xff0c;轮询往每条链路发送报文。提供负载均衡和容错的能力&#xff0c;当有链路出问题&#xff0c;会把流量切换到正常的链路上。交换机端需要配置聚合口。mode1a…

【论文笔记】CRN: Camera Radar Net for Accurate, Robust, Efficient 3D Perception

原文链接&#xff1a;https://arxiv.org/abs/2304.00670 1. 引言 本文提出两阶段融合方法CRN&#xff0c;能使用相机和雷达生成语义丰富且位置精确的BEV特征。具体来说&#xff0c;首先将图像透视特征转换到BEV下&#xff0c;该步骤依赖雷达&#xff0c;称为雷达辅助的视图变换…

C#基础复习

语句 目录 语句 switch&#xff1a; 跳转语句 标签语句 标签&#xff1a; 标签语句的作用域 goto语句 using 语句 资源的包装使用 using 语句示例&#xff1a; 多个资源和嵌套 语句是描述某个类型或让程序执行某个动作的源代码指令 块在语法上算作一个单条嵌入语句。任何语…

电脑无法正常关机?点了关机又会自动重启

“真木马”相信不少朋友遇到过电脑关机自动重启现象&#xff0c;一点关机&#xff0c;但随后电脑有会进入重启状态&#xff0c;就是一直不会停&#xff0c;属实是很难崩。 目录 一、问题症状 二、问题原因 三、解决方案 方法一&#xff1a; 1.关闭系统发生错误时电脑自动…

企业数字化转型全是坑?这几篇数字化转型成功案例,减少70%损失

这篇给大家整理了200企业数字化转型案例合集&#xff0c;涵盖了制造、建筑、教育、零售、互联网等10行业的大中小型企业数字化转型思路&#xff0c;希望对大家有所帮助。 案例全部整合在这篇文章中&#xff0c;点击即可查看>>数字化干货资料合集&#xff01; 01 首先&…

C++编程法则365条一天一条(359)认识各种初始化术语

文章目录Default initialization默认初始化Copy initialization拷贝初始化Aggregate initialization聚合初始化Direct initialization直接初始化list_initialization列表初始化value_initialization值初始化参考&#xff1a; https://en.cppreference.com/w/cpp/language/copy_…
最新文章