当前位置:网站首页>Go学习笔记(篇二)初识Go
Go学习笔记(篇二)初识Go
2022-08-05 10:51:00 【51CTO】
初识Go
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
介绍
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后来追加了Windows系统下的实现。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。 目前,Go每半年发布一个二级版本(即从a.x升级到a.y)。
描述
Go的语法接近C语言,但对于变量的声明有所不同。Go支持垃圾回收功能。Go的并行模型是以东尼·霍尔的通信顺序进程(CSP)为基础,采取类似模型的其他语言包括Occam和Limbo,但它也具有Pi运算的特征,比如通道传输。在1.8版本中开放插件(Plugin)的支持,这意味着现在能从Go中动态加载部分函数。
与C++相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了 切片(Slice) 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持。Go 2.0版本将支持泛型,对于断言的存在,则持负面态度,同时也为自己不提供类型继承来辩护。
不同于Java,Go内嵌了关联数组(也称为哈希表(Hashes)或字典(Dictionaries)),就像字符串类型一样。
编写风格(重点)
左花括号不能放在单独一行
Go语言很可能是第一个将代码风格强制统一的语言,例如Go语言要求public的变量必须以大写字母开头,private变量则以小写字母开头,这种做法不仅免除了public、private关键字,更重要的是统一了命名风格。
另外,Go语言对{ }应该怎么写进行了强制,写法如下表:
花括号“{}”的编写
正确编写 | 错误编写 |
而C和Java语言中则对花括号的位置没有任何要求。哪种更有利,这个见仁见智。但很显然的是,所有的Go代码的花括号位置肯定是非常统一的。
未使用的变量
变量的声明
正确编写 | 错误编写 |
变量声明
Go语言的变量声明方式与C和C++语言有明显的不同。对于纯粹的变量声明,Go语言引入了关键字var,而类型信息放在变量名之后,实例如下:
变量声明语句不需要使用分号作为结束符。与C语言相比,Go语言抛弃了语句必须以分号作为语句结束标记的习惯。
var关键字的另一种用法是可以将若干个需要声明的变量放置在一起,避免重复写var关键字,如下所示:
变量初始化
对于声明变量时需要初始化的场景,var关键字可以保留,但不再是必要的元素,如下所示:
以上三种用法的效果是完全一样的。与第一种用法相比,第三种用法需要输入的字符数大大减少,是偷懒的最佳选择。这里Go语言也引入了另一个C和C++中没有的符号(冒号和等号的组合:=),用于明确表达同时进行变量声明和初始化的工作。(出现在:=左侧的变量不应该是被声明过的,否则会导致编译错误)
变量赋值
Go语言的变量赋值与多数语言一致,但Go语言中提供了多重赋值功能,比如下面这个交换i和j变量的语句:
在不支持多重赋值的语句中,交互两个变量的内容需要引入一个中间变量:
匿名变量
假设GetName( )函数的定义如下,它返回3个值,分别为firstName、lastName和nickName:
若只想获得nickName,则函数调用语句可以用如下方式编写:
未使用的包(import)
包(import)的使用
正确编写 | 错误编写 |
简式变量的声明仅可在函数内部使用
简式变量的使用方法一
正确编写 | 错误编写 |
使用简式变量重复声明变量
你不能在一个单独的声明中重复声明一个变量,但在多变量声明中这是允许的,其中至少要有一个新的声明变量。
重复变量需要在相同的代码块内,否则你将得到一个隐藏变量。
简式变量的使用方法二
正确编写 | 错误编写 |
偶然的变量隐藏
短式变量声明的语法如此的方便(尤其对于那些使用过动态语言的开发者而言),很容易让人把它当成一个正常的分配操作。如果你在一个新的代码块中犯了这个错误,将不会出现编译错误,但你的应用将不会做你所期望的事情。
写在最后
以上就是对Golang的基本介绍了,暂时先写这么多,后面也会进行完善。
你知道的越多,你不知道的就越多,人才们的 【三连】 就是我创作的最大动力,我们下期见!
注:如果本篇博客有任何错误和建议,欢迎人才们留言,你快说句话啊!
参考:
原文链接: Go学习笔记(篇二)初识Go
边栏推荐
- 【翻译】混沌网+SkyWalking:为混沌工程提供更好的可观察性
- 012年通过修补_sss_提高扩散模型效率
- R语言ggplot2可视化:可视化密度图(Density plot)、可视化多个分组的密度图、数据点分布在箱图中间、添加主标题、副标题、题注信息
- 字节一面:TCP 和 UDP 可以使用同一个端口吗?
- Three methods for extracting facial features
- Dynamics 365Online PDF导出及打印
- Chapter 5: Activiti process shunting judgment, judging to go to different task nodes
- 导火索:OAuth 2.0四种授权登录方式必读
- 第八章:activiti多用户任务分配
- 单片机:温度控制DS18B20
猜你喜欢

STM32+ULN2003 drives 28BYJ4 stepper motor (forward and reverse according to the number of turns)

PostgreSQL 2022 Report: Rising popularity, open source, reliability and scaling key

多线程(进阶) - 2.5w字总结

苹果Meta都在冲的Pancake技术,中国VR团队YVR竟抢先交出产品答卷

【MySQL基础】-【数据处理之增删改】

《分布式云最佳实践》分论坛,8 月 11 日深圳见

单片机:温度控制DS18B20

three objects are arranged in a spherical shape around the circumference

RT - Thread record (a, RT, RT Thread version - Thread Studio development environment and cooperate CubeMX quick-and-dirty)

Create a Dapp, why choose Polkadot?
随机推荐
Common operations of oracle under linux and daily accumulation of knowledge points (functions, timed tasks)
PCB布局必知必会:教你正确地布设运算放大器的电路板
第三章 : redis数据结构种类
Latex如何控制表格的宽度和高度
Introduction to SD NAND Flash!
《分布式云最佳实践》分论坛,8 月 11 日深圳见
大佬们 我是新手,我根据文档用flinksql 写个简单的用户访问量的count 但是执行一次就结束
Where is your most secretive personality?
自定义过滤器和拦截器实现ThreadLocal线程封闭
OpenHarmony如何查询设备类型
Opencv算术操作
例题 可达性统计+bitset的使用
提取人脸特征的三种方法
Score interview (1)----related to business
uniapp中的view高度设置100%
【AGC】增长服务1-远程配置示例
RT - Thread record (a, RT, RT Thread version - Thread Studio development environment and cooperate CubeMX quick-and-dirty)
牛刀小试基本语法,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本语法和变量的使用EP02
Confessing in the era of digital transformation: Mai Cong Software allows enterprises to use data in the easiest way
【C语言指针】用指针提升数组的运算效率