【Golang】欲入此Go先看Go的基本语法

news2024/11/15 21:45:26
液氮体质

📓推荐网站(不断完善中):个人博客

📌个人主页:个人主页

👉相关专栏:CSDN专栏、个人专栏

🏝立志赚钱,干活想躺,瞎分享的摸鱼工程师一枚


🍊前言

完成了我们众多的准备工作,已经对于 Go 的一些基础背景了解之后,我们接下来就要进入关于 Go 的语法学习,正式开始进行 Go 之旅,一 Go 到底吧!

接下来系列教程中的所有案例代码,都将在 GitHub 仓库上同步,有好的案例可以提交给博主,也欢迎多点点 star🌟

如果想要查看更多案例,可以 点击这里🚪 收藏查看!

文章目录

  • 🍊前言
  • 1.基础理论
    • 1.1.关于程序的运行
    • 1.2.一些基本的注意事项
  • 2.关于注释
  • 3.关于标识符
  • 4.关键字
  • 5.数据类型
  • 6.关于变量
    • 6.1.创建变量的语法
    • 6.2.关于变量的默认值
    • 6.3.变量的进阶
    • 6.4.短变量声明
  • 7.关于源码
  • 🍒写在结尾


1.基础理论

1.1.关于程序的运行

在之前写案例的过程中我们运行了我们第一个Go语言程序,并且知道了Go的运行可以有go buildgo run的两种指令去操作,这里我们用两张简单的图回顾一下他们的区别

go build 是先将 .go 文件进行编译后运行

0501
  • 有可执行文件的好处就是:如果我们想要在没有Go环境的机器上运行程序,只需要将可执行文件复制过去即可直接运行。

go run 则是直接运行不会生成可执行文件

0502

1.2.一些基本的注意事项

  • Go的源文件是 .go 结尾

  • 在我们hello程序中的 main() 函数是程序的入口,运行程序,需要有它。

  • 在开发过程中请 区分大小写

  • Go的编译是一行行进行的,所以我们要一行一行的写语句,不能将两个语句写在一行内,会报错(这也表现出了Go的简洁性)

    0503
  • 在Go的代码中如果出现的东西 没有被使用 ,那么程序一样是会报错的(Go的代码规范,提高了大家的可阅读性)

    0504

    使用 Goland IDE工具会在一段时间后自动删除没有使用到的内容


Go 语言中一些常见的转义字符

  • \t :制表符,可理解成一个tab位

  • \n :换行

  • \r :回车

  • \\ :输出一个\

  • 以代码的形式理解可以复制这段代码看看效果

     package main
     
     import "fmt"
     
     func main() {
     	fmt.Println("姓名\t性别\t籍贯\t住址\ntom\t男\t天津\t北京")
     }
    

    需要注意的是 { 不能单独放在一行,否则代码在运行时会产生错误


2.关于注释

什么是注释?

注释就是帮助开发者来了解和解释当下这段代码所代表的意思是什么,提高代码的可阅读性,加强开发者们在工作中的合作

Go中的几种常见注释

// 单行注释

/*
 我是多行注释
 */

注意:在程序编译的过程中,注释是不会被纳入编译的


3.关于标识符

简单解释一下,所谓的标识符就好比我们每个人都有一个名字,或者说是代号。在程序中也是这样,我们在进行一些操作的时候需要用一个代号来表示当前的变量、类型、函数等等,以方便我们在程序中重复的使用他们。

标识符的规则

我们要知道,既然标识代表的是名字,名字是不可以随便乱起的,也是需要遵守规则的。就好比我们中国人的名字与外国人的名字一样,不同的地方都要遵守一定的取名规则,这样的名字取出来才不会让程序无法识别。

  • 标识符可以是多个字母(AZ和az)数字(0~9)
  • 可以是下划线
  • 第一个字符必须是字母或下划线而不能是数字

有效的标识符

// 有效的标识符
mahesh   kumar   abc   move_name   a_123

// 无效的标识符
1ab(以数字开头)
case(Go 语言的关键字)
a+b(运算符是不允许的)

4.关键字

关键字,顾名思义,在程序中是比较关键的。为什么这样说?因为关键字实际上就是这门语言在开发之初就已经定义好的,具备一定功能的单词。实际上在我们编写代码的时候也可以明显的观测出,比如在我们的Hello代码中就可以看到,关键字的颜色与我们普通的代码是不一样的(依此也可以作为区分的小技巧)。那么我们在用标识符取名字的时候就要避开这些关键字的名称,不可冲突!

0505

常见的关键字

breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constfallthroughifrangetype
continueforimportreturnvar

预定义标识符

appendboolbytecapclosecomplexcomplex64complex128uint16
copyfalsefloat32float64imagintint8int16uint32
int32int64iotalenmakenewnilpanicuint64
printprintlnrealrecoverstringtrueuintuint8uintptr

注意⚠️:无论是关键字或者是预定义标识符,都已经是Go语言中事先标记好的,在用标识符取名字的过程中要避开,不可重名!


5.数据类型

在Go中的数据类型分两大部分,其一是基本数据类型,其二则是复杂数据类型/派生类型

在学习的前期我们可以先了解一些基本数据类型即可,在后续学习过程中再慢慢陆续接触其他数据类型。

数据类型参考表

序号类型和描述
1布尔型 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
2数字类型 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。
3字符串类型: 字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
4派生类型: 包括:(a) 指针类型(Pointer)(b) 数组类型© 结构化类型(struct)(d) Channel 类型(e) 函数类型(f) 切片类型(g) 接口类型(interface)(h) Map 类型

6.关于变量

变量算是每一种编程语言中的基本组成单位了,在任何学习的过程中都离不开它。

可以把它理解成是一个存放东西的箱子,我们可以把不同的东西放入箱子中,在需要的时候找到那个箱子就等于拿到了里面的东西。

6.1.创建变量的语法

Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。(其实就是标识符规则)

声明变量的一般形式是使用 var 关键字,变量可以一个一个声明也可以同时声明多个。

语法

var 变量名 数据类型 = 值

例子

可以将以下例子手动打出并输出看看!

package main
import "fmt"
func main() {
  	// 此为单个变量的声明
    var a string = "GoDemo"
    fmt.Println(a)

  	// 此为多个变量的声明
    var b, c int = 1, 2
    fmt.Println(b, c)
}

6.2.关于变量的默认值

在上面的案例中,我们可以看到我们在创建变量的时候会赋予其值,但是实际上,我们也可以不赋予值,那么我们的Go语言就会给这个变量赋于默认值。

语法

var 变量名 数据类型

案例

package main
import "fmt"
func main() {

    // 声明一个变量并初始化
  	// 如果字符串没有定义的话,则默认为""
    var a = "RUNOOB"
    fmt.Println(a)

    // 没有初始化就为零值
    var b int
    fmt.Println(b)

    // bool 零值为 false
    var c bool
    fmt.Println(c)
}

其他默认值

除了上述的默认值,在Go语言中还有一个比较常见的默认值就是nil,如下

var a *int
var a []int
var a map[string] int
var a chan int
var a func(string) int
var a error // error 是接口

6.3.变量的进阶

变量自动识别类型

其实在上面的例子中我们可以看到,博主声明了一段字符串但是并没有声明数据类型

这是因为在Go中其实是可以在你赋于初始值的时候进行自动类型判断

不带类型的语法

var 变量名 = 值

案例

package main

import "fmt"

func main() {

	var str = "Let's go"
	fmt.Printf("str数据类型为:%T", str)
}

6.4.短变量声明

由上述案例我们可以知道在变量的初始化时省略变量的类型而由系统自动推断,因此var这个关键字就略显多余

因而Go对于变量还有进一步的优化,可以说大大提升了代码的简洁性,就是短变量声明,其关键符号为 :=

需要注意的是,短变量声明不可以在函数外使用,多用于函数内。

比较麻烦的写法

package main

import "fmt"

func main() {

	var i, j = 10, 20
	fmt.Println("输出的内容为:", i, j)

}

上述代码中我们已经简化了原本var 变量名 数据类型 = 值的这种用法,但经过短变量声明后可以更简洁为

package main

import "fmt"

func main() {

	i, j := 10, 20
	fmt.Println("输出的内容为:", i, j)

}

两种写法得到的结果是相同的


7.关于源码

博主将接下来系列中学习到的源码做了统一保存,在 Github 上,分享给有需要的人(禁止未经说明直接复制转载)。

如有需要可以 点击这里🚪 进行查看,创作不易,如果您觉得不错可以给博主点个 star🌟 ,感激不尽!

希望能够通过 案例 + 注释 + 讲解 的方式在学习过程中的经验和理解分享给大家同时能对想要学习的人提供一些帮助。

🍒写在结尾

今天本文的主要内容还是针对于Go语言中的一些基础语法的应用进行解析。涉及的内容有注释、标识符、关键字、数据类型、变量

其实谱写前面内容的目的也是为了后面我们学会使用变量做铺垫,变量是程序中非常必要的一个组成部分。

以上为个人学习分享,如有错误请指正

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

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

相关文章

OpenAI 最强对话模型 ChatGPT 注册使用笔记

2022年12月5日OpenAI 发布了对话语言模型 ChatGPT,并开放了免费试用。ChatGPT 是一款基于GPT3模型的聊天机器人,该聊天机器人可以在模仿人类说话风格的同时回答大量的问题。在现实世界之中,例如数字营销、线上内容创作、回答客户服务查询&…

Python使用Opencv图像处理方法完成手势识别(一)

Opencv完成手势识别HSV的提取特征提取轮廓绘制完整代码由于是使用Opencv完成手势识别,所以首先利用颜色特征是对手的颜色进行提取,获得HSV的最小值与最大值。HSV的提取 HSV颜色空间阈值主要是靠Trackbar调节阈值和cv2.inRange来生成掩膜来提取。 这是我…

外汇天眼:外汇市场上不得不说的两大类庄家!

前一阵子,天眼君跟好友讨论外汇市场上有没有庄家,今天天眼君就跟大家探讨下这个问题。我们都知道股票交易中是有所谓的庄家的,散户必须要猜测庄家的做法,否则很有可能变成待割的韭菜。 而我们常见的对外宣传中,基本上…

R语言对推特twitter数据进行文本情感分析

原文链接:http://tecdat.cn/?p4012我们以R语言抓取的推特数据为例,对数据进行文本挖掘,进一步进行情感分析,从而得到很多有趣的信息(点击文末“阅读原文”获取完整代码数据)。找到推特来源是苹果手机或者安…

C++ Reference: Standard C++ Library reference: Containers: list: list: assign

C官网参考链接&#xff1a;https://cplusplus.com/reference/list/list/assign/ 公有成员函数 <list> std::list::assign C98 范围 (1) template <class InputIterator> void assign (InputIterator first, InputIterator last); 填充 (2) void assign (…

字符串处理【AC自动机】 - 原理 AC自动机详解

字符串处理【AC自动机】 - 原理 AC自动机详解 AC自动机&#xff08;Aho-Corasick automaton&#xff09;在1975年产生于贝尔实验室&#xff0c;是著名的多模匹配算法。 学习AC自动机&#xff0c;要有KMP和Trie&#xff08;字典树&#xff09;的基础知识。 KMP是单模匹配算法&a…

三代全长16s助攻,轻松搞定水体研究领域10+文章

基于PacBio三代测序平台&#xff0c;可高效获得16s rRNA全长序列&#xff0c;同时不必纠结引物选择带来的结果偏差&#xff0c;令物种分类更多更精准——到达“种”水平。Pacbio平台同时兼具时间短&#xff0c;无需扩增等优势&#xff0c;伴随着三代测序成本的下降&#xff0c;…

<VSCode下载、安装、配置以及连接云服务器进行Linux开发>

目录 1.下载、安装VSCode 2.配置环境及插件 2.1 实用插件安装 2.1.1 中文汉化插件 2.1.2 Remote-ssh插件​ 连接远程云服务器&#xff1a; 远程云服务器开发&#xff1a; Xshell界面与VSCode界面对比&#xff1a; 2.1.3 C/C Extension Pack&#xff08;C/C扩展包&#xff0…

Java实现后端跨域的常见解决方式

目录一、搭建服务&#xff08;cross-server&#xff09;1.1、maven依赖1.2、接口1.3、配置二、搭建服务&#xff08;cross-web&#xff09;2.1、maven依赖2.2、接口2.3、页面2.4、配置2.5、跨域请求结果2.6、常见跨域情况三、解决方案3.1、通过 CrossOrigin 注解3.2、通过配置类…

Kafka高级特性解析之主题

1、管理 使用kafka-topics.sh脚本&#xff1a; 选项说明--config <String: namevalue>为创建的或修改的主题指定配置信息。支持下述配置条目&#xff1a; cleanup.policycompression.typedelete.retention.msfile.delete.delay.msflush.messagesflush.msfollower.repli…

不影响1,4丁炔二醇(BYD)的情况下去除铜离子的工艺

1,4-丁炔二醇BYD&#xff08;but-2-yne-1,4-diol&#xff09;是一种重要的中间体化工原料&#xff0c;广泛应用于生产丁二醇及其下游产品、维生素B6的主要原料&#xff0c;还可以用于镀镍的增亮剂、防腐抑制剂等领域。 1,4&#xff0d;丁二醇&#xff08;BDO&#xff09;是一种…

(附源码)ssm人才市场招聘信息系统 毕业设计 271621

基于jsp的人才市场招聘信息系统的设计与实现 摘 要 人才市场招聘信息系统采用B/S结构、java开发语言、以及Mysql数据库等技术。系统主要分为管理员、用户、两部分&#xff0c;管理员管理主要功能包括&#xff1a;首页&#xff0c;站点管理&#xff08;轮播图、公告栏&#xf…

实验(七):串行口实验

一、实验目的与任务 实验目的&#xff1a; 1&#xff0e;运行Keil开发环境&#xff0c;完成串行口通信软件编程&#xff1b; 2&#xff0e;利用单片机串行口方式1与主机通信&#xff0c;建立Proteus仿真模型。 3&#xff0e;完成系统仿真与调试。。 任务&#xff1a; 1.根据要求…

mongodb 存引擎及配置

上次我们分享到了 wiredTiger 引擎以及他对于以前默认的 MMAPV1 引擎的优势 关于 wiredTiger 引擎 配置这里补充一下&#xff1a; storage:journal:enabled: truedbPath: /data/xiaomotong/mongo1/directoryPerDB: trueengine: wiredTigerwiredTiger:engineConfig:cacheSizeGB:…

Kotlin 开发Android app(二十):悬浮框WindowManager和动画AnimationDrawable

安卓的悬浮框&#xff0c;悬浮框相当于对桌面的一种控制&#xff0c;在安卓中是允许这样的自定义的小窗体出现在桌面的&#xff0c;其实这种小桌面可以使某些应用调用起来非常的方便&#xff0c;而动画的展现使得程序看起来更加有爱。 悬浮框 悬浮框的使用&#xff0c;通常是跟…

【负荷预测】长短期负荷预测(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;主要研究方向是电力系统和智能算法、机器学…

Python学习-8.1.3 标准库(turtle库的基础与实例)

2.3 turtle库 turtle库是能够进行基本的图形绘制的标准库。 turtle库包含100多个功能函数&#xff0c;主要包括三类&#xff1a;窗体函数、画笔运动函数、画笔状态函数 2.3.1 窗体函数 注&#xff1a;像素是指组成图像的小方格&#xff0c;每个小方格都有一个明确的位置和被…

图解LeetCode——1812. 判断国际象棋棋盘中一个格子的颜色(难度:简单)

一、题目 给你一个坐标 coordinates &#xff0c;它是一个字符串&#xff0c;表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。 如果所给格子的颜色是白色&#xff0c;请你返回 true&#xff0c;如果是黑色&#xff0c;请返回 false 。 给定坐标一定代表国际象…

少走弯路 → PlantUML网站推荐

PlantUML官网 Real World PlantUML 建议画图前从这里拷贝模板 PlantUML在线编辑 虽然简洁但是比官网好用的多 PlantUML 在线编辑器画面美观推荐使用 文章目录类图类图 一直都没搞懂 关联&#xff0c;依赖&#xff0c;组合&#xff0c;聚合的关系&#xff0c;看了视频稍微…

hdfs-over-ftp使用说明

hdfs-over-ftp使用说明 一、介绍 hdfs-over-ftp可以将hdfs文件系统通过ftp服务方式暴露出来,可以通过ftp客户端下载和上传hadoop文件。 二、编译及安装配置 原作者很久不更新了https://github.com/iponweb/hdfs-over-ftp 如果要支持hadoop2、hadoop3需要自己编译&#xff1b;可…