【30天熟悉Go语言】3 怀着Java看Go的编程规约

news2024/11/26 1:29:33

文章目录

  • 一、前言
  • 二、语法
      • Go和Java的语法区别
    • 注释
      • Go和Java的注释区别
  • 三、代码规范
  • 四、API包
  • 五、总结和后续

一、前言

在这里插入图片描述

Go系列文章:

  1. GO开篇:手握Java走进Golang的世界
  2. 2 Go开发环境搭建、Hello World程序运行

Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html

二、语法

1> 源文件以.go结尾

2> 程序的执行入口是main()函数

3> 严格区分大小写

4> 方法由一条条语句构成,每个语句后不需要加分号(GO会在每行后自动加分号)

5> GO编译器是一行行进行编译的,因此一行只能写一条语句(自己加上分号可以多条语句),否则会报错

6> 定义的变量或者import的包如果没有使用到,代码不能编译通过。

7> 标识符(变量名、方法名、等名字)定义规则:

  1. 三个组成部分:数字,字母,下划线_;汉字也是可以用,但是不建议使用;建议用字母

  2. 不能以数字开头,不能包含空格,不能使用Go中的保留关键字

  3. 下划线"_"本身在Go中是一个特殊的标识符,称为空标识符。它可以代表任何其它的标识符,但是其他标识符对应的值会被忽略(比如:忽略某个返回值);

    • 所以其能被作为占位符使用,不能单独作为标识符使用。
  4. 命名规则:

    1. 包名:尽量保持package的名字和目录名一致,不要和标准库有冲突;

      • package main 包:

        main包是一个程序的入口包,main函数所在的包建议定义为main包;如果不定义为main包,得不到可执行文件。

    2. 变量名、函数名、常量名 : 采用驼峰法(单词按照大写区分开)命名;

      • 利用首字母的大小写做权限控制:
        • 如果变量名、函数名、常量名首字母大写,则可以被其他的包访问;
        • 如果首字母小写,则只能在本包中使用。

8> import导入语句放在包声明语句的下面;

  • 导入的包名需要使用双引号包裹起来;
  • 注意使用GOPATH 和 GO Modules时import包的方式区别。近期专文介绍。

9> 大括号要成对出现,缺一不可。

Go和Java的语法区别

1> 语句后加分号?

  • Java每一条语句后都要加分号,Go可以不加分号

2> import未使用的包?定义未使用的变量?

  • Java允许import的包、定义的变量不使用,并且代码仍然可以编译通过,而Go代码不能编译通过。

3> 文件后缀名

  • Java源文件以java结尾、编译文件是.class结尾,多个.class打成的一个可执行文件是.jar结尾,.jar不能直接在windows和linux上执行,得用java命令在JVM中执行。
  • Go源文件以.go结尾,有main包main函数的情况下,.go文件打包成二进制对应操作系统的可执行程序,如:windows上.exe结尾的可执行程序。

4> 类库文件后缀名

  • Java的类库以.jar结尾;
  • Go 非main包没有main函数的程序 会被编译打包打成一个类库,以.a结尾;

注释

Go和Java一样也有两种注释类型:行注释、块注释(多行注释):

  1. 行注释 // (Goland快捷键:Ctrl+/ 再按一次取消注释)
  2. 块注释(多行注释) /**/ (Goland快捷键:Ctrl + Shift+ / 再按一次取消注释)
    • 注意:块注释中不可以嵌套块注释。

行注释更通用,块注释主要用于针对包的详细说明或者屏蔽大块的代码。

官方推荐使用行注释 //

Go和Java的注释区别

Go中的注释写法和Java中的基本一样。

  • 单行注释,两者相同,都是//

  • 块注释(多行注释),区别就在块注释

    • /**
      	Java多行注释
      */
      
    • /*
          Go的多行注释
      */
      

三、代码规范

Go的设计者想要开发者有统一的代码风格,风格不对会报错的哦。

1> 缩进:

  • 向后缩进(Tab)、向前取消缩进(Shift + Tab)
  • 命令行方式格式化(gofmt -w hello.go);如果不加-w,则格式化只是效果展示,不会写入到源文件;加-w才会写入到源文件

比如源文件格式化为:
在这里插入图片描述
使用命令行格式化后:

(1)不写入到源文件:
在这里插入图片描述
(2)写入到源文件:
在这里插入图片描述

2> 成对编程 {} () “” ‘’

3> 运算符两边 + 空格

在这里插入图片描述

4> 中括号{ 要和函数名在同一行,否则会编译报错(Missing function body

在这里插入图片描述

5> 官方推荐使用行注释 //

在这里插入图片描述

6> 一行最长不超过80个字符,超过的换行展示,保持格式优雅!

  • 非强制要求,不过我们输出长字符串时会发现,go会帮我们每80个字符串自动换行

在这里插入图片描述

四、API包

Gol中文网在线标准库文档:https://studygolang.com/pkgdoc

在这里插入图片描述

Go官网API文档:https://pkg.go.dev/std

在这里插入图片描述

五、总结和后续

这里主要了解一下Go的编程规约和相应的API包地址,后面正式开始coding。

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

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

相关文章

ChatGPT之后,值得关注的垂直领域大模型

垂直领域大模型是指在特定的领域或行业中经过训练和优化的大型语言模型。与通用语言模型相比,垂直领域大模型更专注于某个特定领域的知识和技能,具备更高的领域专业性和实用性。 题图 from unsplash 与通用大模型相比,垂直领域大模型具有以下…

DMBOK知识梳理for CDGA/CDGP——第一章数据管理(附常考知识点)

第一章 数据管理 第一章在 CDGA|CDGP考试中分值占比均不是很高,主要侧重点是考概念性的知识,理解数据管理的目标原则、还有与其他概念的区别点,同时掌握几个关键核心的图(车轮图、六边形图、语境关系图)。总体来说难度…

ESP32 CAM 模块和 OpenCV 的二维码扫描器

概述 该项目是关于使用 ESP32 CAM 模块和 OpenCV 设计的二维码扫描仪或阅读器。我们将使用 ESP32 摄像头模块和 python 库开发一个程序和设备,我们可以用它来扫描二维码。使用 ESP32 CAM,项目变得更便宜。 QR 码现在已经成为我们日常生活的一部分,因为我们几乎在任何地方都…

JavaScript 中如何计算代码段运行时间

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是全栈 …

一起来学习文本怎么翻译吧

你是否曾经需要将一篇文章或一段文字翻译成另一种语言?翻译是一种非常重要的技能,它可以帮助我们更好地沟通和理解不同文化之间的差异。既然翻译这么重要,你知道文本怎么翻译才简单快捷吗?如果你还不会文本翻译的话,请…

Java实现支付宝沙箱环境支付,SDK接口远程调试

文章目录 1.测试环境2.本地配置3. 内网穿透3.1 下载安装cpolar内网穿透3.2 创建隧道 4. 测试公网访问5. 配置固定二级子域名5.1 保留一个二级子域名5.2 配置二级子域名 6. 使用固定二级子域名进行访问 转发自cpolar内网穿透的文章:Java支付宝沙箱环境支付&#xff0…

实时互动下视频 QoE 端到端轻量化网络建模

在实时视频互动中,影响观众对视频体验的有较多且复杂的因素,包括:画质、流畅度以及与其耦合的观看设备等。传统客观算法会利用网络传输或编解码参数拟合接收端人的感知体验,或者使用图像质量结合其他相关参数拟合实时视频质量。由…

chatgpt赋能python:Python[-5:-1]:一种高效且灵活的编程语言

Python[-5:-1]:一种高效且灵活的编程语言 Python被广泛应用于数据分析、机器学习、网络爬虫和自动化测试等领域。Python最新的版本是Python 3.10。 Python[-5:-1]的优点 Python[-5:-1]是Python语言中最新的版本。它的优点如下: 1.更快的性能 Python…

卡方检验Chi-square test

1.什么是卡方检验 卡方检验是一种用途很广的假设检验方法,属于非参数检验的范畴。 主要是比较两个或两个以上样本率以及两个分类变量的关联性分析。 根本思想是在于比较理论频次与实际频次的吻合程度或拟合优度问题。 分子代表了实际值与期望值的偏差,而…

.Net8顶级技术:边界检查之IR解析(二)

前言 IR技术应用在各个编程语言当中,它属于JIT的核心部分,确实有点点麻烦。但部分基本明了。本篇通过.Net8里面的边界检查的小例子了解下。前情提要,看这一篇之前建议看看前一篇:点击此处,以便于理解。 概括 1.前奏 先…

POSTGRESQL PG15关于归档的新模式

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到3群(共…

chatgpt赋能python:PythonSoup对于爬虫程序员来说为什么如此重要

Python Soup 对于爬虫程序员来说为什么如此重要 介绍 Python是现代编程世界中最广泛使用的语言之一。它是一个高级编程语言,可用于许多应用程序,从机器学习到游戏开发再到网络爬虫。对于网络爬虫,Python Soup是非常重要的工具之一。Soup是一…

如何像访问百度一样访问家里的服务器?(三)

来源:公众号【鱼鹰谈单片机】 作者:鱼鹰Osprey ID :emOsprey 在前面的两篇笔记《家里宽带搞个服务器,YYDS(一)》《家里宽带申请公网 IP(二)》,介绍了如何获取公网 IP&a…

chatgpt赋能python:Python%6简介

Python %6 简介 什么是Python %6? Python %6指的是在Python中使用%6操作符来计算一个数的余数。余数是指在进行整除时所剩余下的数字。在Python中,使用%符号来表示计算余数,因此%6表示计算一个数除以6所剩下的余数。 为什么要使用Python %…

Golang每日一练(leetDay0076) 第k大元素、组合总和III

目录 215. 数组中的第K个最大元素 Kth-largest-element-in-an-array 🌟🌟 216. 组合总和 III Combination Sum iii 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日…

13 Binder通信之ServiceManager

Binder通信之ServiceManager 一、前言 Android系统中存在很多service,当某个应用调用系统某个service的功能时,往往向系统发出请求,调用该服务的外部接口,这种外部接口我们通常叫做代理接口,也就是说要拿到目标服务需要先拿到目标服务的代理。这个时候,如果每个应用cli…

少林派问题汇总2

Q: torch转bmodel模型时,bmnetp工具报错 A: 有的模型涉及到动态shape,需要设置成动态编译dyntrue Q: A: 内存占满了,进程被系统kill掉了,运行内存建议12g以上 Q: ss…

企业级API网关之典型应用场景

目 录 01 企业面对API与网关的现状‍‍‍‍‍ 02 APIGW介绍及企业应用场景 03 总结 01 企业面对API与网关的现状‍ 在企业中,进行新的系统/应用/产品开发时,具有周密的流程:从需求分析、设计、开发、测试、发布与验收。所以,一…

Emacs之打开交互log(九十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

IDEA装上这3款ChatGPT插件,彻底炸裂!!

今天,给大家介绍3款好用的IntelliJ IDEA ChatGPT插件,各有千秋,可以帮我自动写代码,自动改善代码性能和安全并且生成视图对比,以及解释代码,优化代码,生成单元测试用例,更牛逼的是直接可以根据描…