Golang 简介与基本语法学习

Go,也被称为 Golang,是一门由 Google 设计的开源编程语言。它旨在提供高效的开发体验,同时具备并发性、内存安全和简洁性。本篇博客将介绍 Golang 的基本语法和一些示例,帮助读者快速入门这门令人着迷的语言。

简介

Go 语言的设计灵感来自于 C 语言和 Pascal 语言,它具备静态类型、并发性、垃圾回收等特性。Go 的编程风格简洁明了,使得代码易于理解和维护。它的并发模型通过 goroutines 和 channels 实现,并发编程变得更加容易。此外,Go 还具备自动垃圾回收功能,减轻了开发者的负担。

基本语法学习

Hello World

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

以上是一个简单的 Hello World 程序,在终端运行时,输出 “Hello, World!”。

变量与常量

package mainimport "fmt"func main() {var name string = "Alice"age := 30const pi = 3.1415926fmt.Println("Name:", name)fmt.Println("Age:", age)fmt.Println("Pi:", pi)
}

在上面的示例中,展示了如何声明变量和常量,以及初始化它们的方法。

控制流

package mainimport "fmt"func main() {score := 85if score >= 90 {fmt.Println("A")} else if score >= 80 {fmt.Println("B")} else {fmt.Println("C")}for i := 0; i < 5; i++ {fmt.Println(i)}fruits := []string{"apple", "banana", "orange"}for _, fruit := range fruits {fmt.Println(fruit)}
}

上述示例展示了条件语句和循环的使用方法,以及如何遍历数组。

循环示例

package mainimport "fmt"func main() {// for 循环示例fmt.Println("for 循环示例:")for i := 0; i < 5; i++ {fmt.Println(i)}// for 循环遍历数组fmt.Println("\nfor 循环遍历数组示例:")fruits := []string{"apple", "banana", "orange"}for index, fruit := range fruits {fmt.Printf("Index: %d, Fruit: %s\n", index, fruit)}// 使用 for 无限循环fmt.Println("\n使用 for 无限循环示例:")sum := 0for {sum++if sum > 5 {break}}fmt.Println("Sum:", sum)
}

判断示例

package mainimport "fmt"func main() {// if 判断示例fmt.Println("if 判断示例:")score := 85if score >= 90 {fmt.Println("A")} else if score >= 80 {fmt.Println("B")} else {fmt.Println("C")}// switch 判断示例fmt.Println("\nswitch 判断示例:")day := "Monday"switch day {case "Monday":fmt.Println("Today is Monday.")case "Tuesday":fmt.Println("Today is Tuesday.")default:fmt.Println("Other day.")}// 使用 switch 判断多个条件fmt.Println("\n使用 switch 判断多个条件示例:")num := 3switch {case num < 0:fmt.Println("Negative number")case num > 0:fmt.Println("Positive number")default:fmt.Println("Zero")}
}

以上示例分别展示了循环和判断的基本用法。希望这些示例能够帮助您更好地理解 Golang 的语法特性。

函数

package mainimport "fmt"func add(a, b int) int {return a + b
}func main() {result := add(3, 5)fmt.Println("3 + 5 is:", result)
}

在上面的示例中,定义了一个简单的函数 add,用来计算两个整数的和,并在 main 函数中调用这个函数。

在 Go 语言中,导入模块使用 import 关键字。以下是一个示例,展示了如何导入模块:

package mainimport ("fmt""math/rand""time"
)func main() {// 使用 math 包中的函数fmt.Println("Random number:", rand.Intn(100))// 使用 time 包中的函数fmt.Println("Current time:", time.Now())
}

在上面的示例中,我们使用了 import 关键字导入了 fmtmath/randtime 三个模块。可以通过修改代码中的导入模块的路径来导入其他标准库或自定义库。

值得注意的是,在 Go 中惯例是将所有导入的包放在一对圆括号中,每个导入包占据一行。如果要导入多个包,可以通过同时导入它们来减少代码行数。

结构体与方法

package mainimport "fmt"type Person struct {Name stringAge  int
}func (p Person) introduce() {fmt.Printf("Hello, my name is %s and I am %d years old.\n", p.Name, p.Age)
}func main() {person := Person{Name: "Bob", Age: 25}person.introduce()
}

这个示例展示了如何定义一个结构体 Person 和为结构体定义方法 introduce,以及如何调用这个方法。

结语

本篇博客介绍了 Golang 的基本语法和特性,希望能帮助读者快速入门这门强大的编程语言。要深入学习更多关于 Golang 的内容,建议阅读官方文档和不同的教程。祝愿大家在使用 Golang 进行开发时取得成功!

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

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

相关文章

一个脚本两步计算材料Raman谱(附数据处理和绘图脚本)

在以往推送中已经介绍了相当多的计算材料Raman的方法&#xff0c;使用的软件主要为Phonopy-Spectroscopy&#xff0c;相关软件还有vasp&#xff0c;phonopy&#xff0c;phono3py等。 Phonopy-Spectroscopy计算材料红外和Raman光谱 Phonopy-Spectroscopy 计算红外和拉曼光谱 也…

经典面试题从浏览器输入URL到页面加载的过程?

从输入URL到页面加载的过程涉及多个步骤&#xff0c;包括DNS解析、TCP连接、发送HTTP请求、服务器处理请求、浏览器解析渲染页面以及断开连接。具体如下&#xff1a; DNS解析&#xff1a;当你在浏览器中输入一个URL时&#xff0c;浏览器首先需要将域名转换为IP地址。这个过程称…

QT中提升为自定义控件的方法

一&#xff0e;介绍 提升为自定义的控件用法&#xff1a;先要写好自定义控件后&#xff0c;再添加&#xff0c;在频繁使用同一控件时&#xff0c;的确非常的高效。 同时导入别人开发的控件操作方法也类似。 二&#xff0e;下面以自定义的QPushButton作一个很简单的例子&#x…

MongoDB聚合运算符:$bottomN

$bottomN聚合运算符返回分组中指定顺序的最后n个元素&#xff0c;如果分组中的元素数量小于n&#xff0c;则返回分组的全部元素。从MongoDB5.2开始支持。 语法 {$bottomN:{n: <expression>,sortBy: { <field1>: <sort order>, <field2>: <sort or…

精品SSM的教学管理系统课程作业成绩

《[含文档PPT源码等]精品基于SSM的教学管理系统[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; Java——涉及技术&#xff1a; 前端使用技术&#xff1a;HTML5,CSS3、Jav…

esp32 C3和S3 开发板电流对比

出去好奇用合宙家的 lot power 测了两块开发板的运行电流。 esp32 S3 (嘉立创开发板 8N8 版本) 模式 电流downloa模式49 毫安空代码91 毫安light mode27 毫安deep mode25 毫安delay 40 毫安 esp32 C3 无串口芯片 &#xff08;合宙 9.9 元版本&#xff09; 模式 …

uniapp npx update-browserslist-db@lates 问题解决

在uniapp运行项目时&#xff0c;会有这种报错&#xff0c;其实这是表明browserslistlatest版本低了&#xff0c;在催你升级版本&#xff0c;browserslistlatest是用来支持解析css用的&#xff0c;当然&#xff0c;你也可以直接忽略这个报错提示&#xff0c;也可以正常运行项目。…

探索数据结构:深入了解顺序表的奥秘

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 什么是顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元…

【初中生讲机器学习】13. 决策树算法一万字详解!一篇带你看懂!

创建时间&#xff1a;2024-03-02 最后编辑时间&#xff1a;2024-03-02 作者&#xff1a;Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏&#xff0c;很高兴遇见你~ 我是 Geeker_LStar&#xff0c;一名初三学生&#xff0c;热爱计算机和数学&#xff0c;我们一起加…

取送货问题(Pickup and Delivery Problem)

取送货问题及其变体 广义取送货问题&#xff08;General Pickup and Delivery Problems&#xff0c;GPDP&#xff09;可以分为两类&#xff1a; Vehicle Routing Problems with Backhauls&#xff0c;VRPB&#xff1a;从配送中心&#xff08;depot&#xff09;取货运输货物到客…

测试/测试开发八股——找大厂测试实习基础篇

第一部分:基础概念 1. 软件测试是什么? 在规定的条件下对一个产品或者程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 软件测试工程师的任务 2. 软件测试工程师的任务 软件测试工程师主要工作是检查软件是否有bug、是否具有稳定…

5.设备驱动程序

5. 设备驱动程序 Linux 内核是一个比较庞大的系统&#xff0c;深入理解内核可以减少在系统移植中的障碍。在系统移植中设备驱动开发是一项很复杂的工作&#xff0c;由于 Linux 内核提供了一部分源代码&#xff0c;同时还提供了对某些公共部分的支持&#xff0c;例如&#xff0c…

数据结构与算法:堆

朋友们大家好啊&#xff0c;本篇文章来到堆的内容&#xff0c;堆是一种完全二叉树&#xff0c;再介绍堆之前&#xff0c;我们首先对树进行讲解 树与堆 1.树的介绍1.1节点的分类 2.树的存储结构3.二叉树的概念和结构3.1 二叉树的特点3.2 特殊的二叉树3.3二叉树的存储结构 4.堆的…

Acwing---1460. 我在哪?

我在哪&#xff1f; 1.题目2.基本思想3.代码实现 1.题目 农夫约翰出门沿着马路散步&#xff0c;但是他现在发现自己可能迷路了&#xff01; 沿路有一排共 N N N 个农场。 不幸的是农场并没有编号&#xff0c;这使得约翰难以分辨他在这条路上所处的位置。 然而&#xff0c;…

Mybatis | 动态SQL

目录: 动态SQL中的 “元素” :\<if>元素\<choose>、\<when>、\<otherwise>元素\<where>、\<trim>元素\<set>元素\<foreach>元素\<bind>元素 作者简介 &#xff1a;一只大皮卡丘&#xff0c;计算机专业学生&#xff0c;正…

单细胞Seurat - 降维与细胞标记(4)

本系列持续更新Seurat单细胞分析教程&#xff0c;欢迎关注&#xff01; 非线形降维 Seurat 提供了几种非线性降维技术&#xff0c;例如 tSNE 和 UMAP&#xff0c;来可视化和探索这些数据集。这些算法的目标是学习数据集中的底层结构&#xff0c;以便将相似的细胞放在低维空间中…

__vueParentComponent和__vue__获取dom元素上的vue实例

vue2: 使用__vue__ const el document.querySelector(.xxx); const vueInstance el.__vue__;vue3: 使用 __vueParentComponent const el document.querySelector(.xxx); const vueInstance el.__vueParentComponent;

Python错题集-4:NameError:(变量名错误)

1问题描述 Traceback (most recent call last): File "D:\pycharm\projects\1-可视化学习\8.3更改小提琴图的中位数、均值、颜色等.py", line 8, in <module> violin_parts plt.violinplot(data, showmediansTrue, showmeansTrue) …

代码随想录算法训练营第四十四天 完全背包 、零钱兑换 II 、组合总和 Ⅳ

代码随想录算法训练营第四十四天 | 完全背包 、零钱兑换 II 、组合总和 Ⅳ 完全背包 题目链接&#xff1a;题目页面 (kamacoder.com) 解释一、01背包 一维 &#xff1a;为什么要倒序遍历背包&#xff1f; 首先要明白二维数组的递推过程&#xff0c;然后才能看懂二维变一维的…

【MATLAB源码-第150期】基于matlab的开普勒优化算法(KOA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 开普勒优化算法&#xff08;Kepler Optimization Algorithm, KOA&#xff09;是一个虚构的、灵感来自天文学的优化算法&#xff0c;它借鉴了开普勒行星运动定律的概念来设计。在这个构想中&#xff0c;算法模仿行星围绕太阳的…