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

news2025/3/1 11:20:30

下面是一篇关于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.coloradmin.cn/o/412461.html

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

相关文章

从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala

从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala 前言 【本文适合有一定计算机基础/半年工作经验的读者食用。立个Flg&#xff0c;愿天下不再有肤浅的SQL Boy】 谈到大数据开发&#xff0c;占据绝大多数人口的就是SQL Boy&#xff0c;不接受反驳&#xff0c;毕竟大…

离散数学_第二章:基本结构:集合、函数、序列、求和和矩阵(1)

集合与函数2.1 集合 2.1.1 集合的基本概念 2.1.2 集合的表示方法 2.1.3 文氏图 2.1.4 证明集合相等 2.1.5 集合的大小 ——基 2.1.6 幂集 2.1.7 集族、指标集 2.1.8 笛卡尔积 2.1.9 容斥原理2.1 集合 2.1.1 集合的基本概念 定义1&#xff1a;集合 是不同对象的一个无序的聚…

23黑马vue

1、Vue概述 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, …

铁路轨道不平顺数据分析与预测

铁路轨道不平顺数据分析与预测 1.引言 铁路轨道作为铁行车的基础设施&#xff0c;是铁路线路的重要组成部分。随着经济和交通运输业的发展&#xff0c;我国的铁路运输正朝着高速和重载方向迅速发展&#xff0c;与此同时&#xff0c;轨道结构承受来自列车荷载、运行速度的冲击…

Elasticsearch 学习+SpringBoot实战教程(三)

需要学习基础的可参照这两文章 Elasticsearch 学习SpringBoot实战教程&#xff08;一&#xff09; Elasticsearch 学习SpringBoot实战教程&#xff08;一&#xff09;_桂亭亭的博客-CSDN博客 Elasticsearch 学习SpringBoot实战教程&#xff08;二&#xff09; Elasticsearch …

QT笔记——QtXlsx操作Execl

使用第三方库QtXlsx来操作execl 环境&#xff1a;vs2019 qt5.12.2 第一步&#xff1a; 我们需要找到对应的下载QtXlsx的第三方库的下载路径&#xff1a; QtXlsx下载 第二步&#xff1a; 编译我们的QtXlsx&#xff0c;看了网上有很多中的例子&#xff0c;我这边暂时只举例 vsqt…

一个评测模型+10个问题,摸清盘古、通义千问、文心一言、ChatGPT的“家底”!...

‍数据智能产业创新服务媒体——聚焦数智 改变商业毫无疑问&#xff0c;全球已经在进行大模型的军备竞赛了&#xff0c;“有头有脸”的科技巨头都不会缺席。昨天阿里巴巴内测了通义千问&#xff0c;今天华为公布了盘古大模型的最新进展。不久前百度公布了文心一言、360也公布了…

技术经济学(刘秋华)(第三版)——第三章 经济型评价的基本要素

第三章 经济型评价的基本要素 技术经济分析的基本原理包括技术经济比较原理和资金报酬原理。技术经济比较原理又包括满足需要的可比原理、总消耗费用的可比原理、价格指标的可比原理和时间因素的可比原理四个方面。这些原理的作用在于确保技术方案的经济性和可行性。 其中&am…

ChatGPT批量翻译-ChatGPT批量生成多国语言

ChatGPT翻译的准吗 ChatGPT是一种基于Transformer架构的自然语言处理技术&#xff0c;其翻译准确性取决于所训练的模型和数据集的质量。在特定的语料库和训练数据下&#xff0c;ChatGPT可以实现一定程度的准确翻译。但是&#xff0c;与人工翻译相比&#xff0c;ChatGPT的翻译质…

【Deep Learning】CNN卷积神经网络—卷积

卷积 文章目录卷积Quickstart一&#xff0c;计算机视觉&#xff08;Computer vision&#xff09;二&#xff0c;边缘检测&#xff08;Edge detection example&#xff09;-2.1 卷积操作过程&#xff1a;三&#xff0c;边缘检测的更多知识&#xff08;More edge detection&#…

4月想跳槽的同学,没有更好的选择,可以去美团

在美团干了半年&#xff0c;说一下自己的感受&#xff0c;美团是一家福利中等&#xff0c;工资待遇中上&#xff0c;高层管理团队强大&#xff0c;加班强度一般&#xff0c;技术不错&#xff0c;办公环境一般&#xff0c;工作氛围中上&#xff0c;部门差距之间工作体验差距巨大…

SpringBoot-数据访问-整合MyBatis-配置版

引入依赖 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version> </dependency> ConditionalOnSingleCandidate(DataSource.class) 单一数…

视图的使用

为什么引入视图&#xff08;Views&#xff09; 如果您读过其他类似的书&#xff0c;可能会看到这些书在介绍视图时列举了许多引入视图的原因。其中认为最重要的原因是维护数据的独立性。那么什么是数据的独立性呢&#xff1f; 早期信息系统的设计与开发多采用模块驱动方式&am…

NumPy 秘籍中文第二版:七、性能分析和调试

原文&#xff1a;NumPy Cookbook - Second Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 在本章中&#xff0c;我们将介绍以下秘籍&#xff1a; 使用timeit进行性能分析使用 IPython 进行分析安装line_profiler使用line_profiler分析代码具有cProfile扩展名…

【分布式事务AT模式 本地部署Seata服务】分布式事务框架Seata详细讲解

前言 这篇文章我会从0到1详细搭建分布式事务框架seata的使用&#xff0c;那么我们首先要先了解一下什么是分布式事务&#xff1f; 本篇文章是本地启动seata服务并且注册到nacos中&#xff0c;在SpringCloud中整合seata框架请转移下方连接 点我跳转SpringCloud整合seata教程&…

【网络原理】TCP/IP协议(续)

目录 &#x1f525;网络层重点协议&#xff08;IP 协议&#xff09; 一、地址管理 1.如何解决上述地址不够用问题&#xff1f; 2.NAT 机制 2.1 NAPT 2.2 在 NAT 背景下如何通信&#xff1f; 3.IPv6 4.IP地址 4.1 ABCDE类 4.2 子网掩码 4.3 特殊的 IP 地址 二、路由…

传统汽车保险丝盒与智能保险丝盒Efuse的应用

一、传统汽车保险丝盒 1、概述 电气盒是用于提供车辆电源分配和回路保护的电气枢纽。电气盒能简化线束的安装和整车的装配过程&#xff0c;改善系统的整体质量水平&#xff0c;降低成本和减少散乱。 一般传统电气盒分为PFB&#xff08;预保险丝盒&#xff09;&#xff0c;UE…

公网使用SSH远程登录macOS服务器【内网穿透】

文章目录前言1. macOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接macOS3.1 macOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接macOS4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址5. 使用固定TCP端口地址ssh远程前言…

Nacos共享配置

本文介绍一下Nacos作为配置中心时&#xff0c;如何读取共享配置 我的环境 Windows10JDK8SpringCloud&#xff1a;Finchley.RELEASESpringBoot&#xff1a;2.0.4.RELEASEspring-cloud-alibaba-dependencies&#xff1a;0.2.2.RELEASENacos-server&#xff1a;1.0.1 本文的项目…

去互联网大厂卷还是去上升期创业型公司offer二选一?你怎么抉择?

上升期的创业型公司 vs 大厂 如何抉择&#xff1f; 最近总有一些粉丝特别“凡尔赛”的发几个 offer 问我选择哪个&#xff1f;其中比较典型的一个问题就是&#xff1a; “一个是处于上升期的创业型公司 &#xff0c;一个行业大厂&#xff0c;薪资待遇差不多&#xff0c;到底该…