我的编程空间,编程开发者的网络收藏夹
学习永远不晚

go语言有缩进吗

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

go语言有缩进吗

这篇文章主要介绍“go语言有缩进吗”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言有缩进吗”文章能帮助大家解决问题。

go语言有缩进。在go语言中,缩进直接使用gofmt工具格式化即可(gofmt使用tab进行缩进);gofmt工具会以标准样式的缩进和垂直对齐方式对源代码进行格式化,甚至必要情况下注释也会重新格式化。

go语言的代码风格

(1)缩进和折行

缩进直接使用gofmt工具格式化即可(gofmt是使用tab缩进的)。gofmt该工具会以标准样式的缩进和垂直对齐方式对源代码进行格式化,甚至必要情况下注释也会重新格式化。

折行方面,一行最长不超过120个字符,超过的请使用换行展示,尽量保持格式优雅

我们使用GoLand开发工具,直接使用快捷键:Ctrl+Alt+L即可。

(2)语句的结尾

Go语言中是不需要类似于Java需要分号结尾,默认一行就是一条数据。

如果你打算将多个语句写在同一行,它们则必须使用。

(3)括号和空格

括号和空格方面,也可以直接使用gofmt 工具格式化(go会强制左大括号不换行,换行会报语法错误),所有的运算符和操作数之间要留空格。

//正确的方式if a > 0 {}//错误的方式if a>0  // a,>,0之间应该使用空格{       //左大括号不可以换行,会报语法错误}

(4)import规范

import在多行的情况下,goimports会自动帮你格式化,如果你在一个文件里面引入了一个package,建议采用如下格式:

import {"fmt"}

如果你的包引入了三种类型的包,标准库包,程序内部包,第三方包,建议采用如下方式进行组织你的包

inport{"encoding/json""strings""myproject/models""myproject/controller""github.com/astaxie/beego"}

有顺序的引入包,不同的类型采用空格分隔,第一种实际准库,第二是项目包,第三是第三方包。【相关推荐:Go视频教程】

在项目中不要使用相对路径引入包

(5)错误处理

错误处理的原则就是不能丢弃任何有返回err的调用,不要使用_丢弃,必须全部处理。接收到错误,要么返回err,或者使用log记录下来

  • 尽早return:一旦有错误发生,马上返回

  • 尽量不使用panic,除非你知道你在做什么

  • 错误描述如果是英文必须为小写,不需要标点结尾

  • 采用独立的错误流进行处理

// 错误写法if err != nil {// error handing} else {//normal code}// 正确写法if err != nil {// error handingreturn // or continue, etc.}//  normal code

(6)测试

单元测试文件命名规范为 example_test.go

测试用例的函数名称都必须以Test

每个重要的函数都要首先编写测试用例,测试用例和正规代码一起提交方便进行回归测试

go语言的gofmt命令

gofmt是一个单独的命令,用来格式化Go的源代码。它用制表符(tab)进行缩进,空格进行对齐。对齐假定编辑器使用的是等宽字体。如果没有显式指定路径,它将处理标准输入;给定一个文件,它将处理该文件;给定一个文件夹,他将递归处理该文件夹下的所有.go文件(隐藏文件除外)。默认情况下,gofmt会将重新格式化好的代码打印至标准输出(而不是直接更新源文件)。

用法如下:

gofmt [flags] [path ...]

flags如下:

  • -d 重新格式化后的代码不再打印至标准输出。如果文件代码格式与gofmt不一致,打印区别至标准输出(该标识类似git的diff命令)。

  • -e 打印所有的错误(包括假的)。

  • -l 重新格式化后的代码不再打印至标准输出。如果文件代码格式与gofmt不一致,打印该文件名至标准输出。

  • -r rule 重新格式化源文件前应用指定的重写规则。

  • -s 在应用规则后(如果有的话),尝试简化代码。

  • -w 重新格式化后的代码不再打印至标准输出。如果文件代码格式与gofmt不一致,使用gofmt的版本进行重写。重写过程中如果出现错误,原始文件将使用自动备份进行还原。

调试支持:

  • -cpuprofile filename 将cpuprofile写入到指定的文件。

注意:-r标识指定的重写规则必须是一个字符串形式:pattern -> replacement

pattern和replacement部分必须是一个有效的Go表达式。在pattern中,单字符小写标识符用作匹配任意子表达式的通配符,这些表达式将替换为replacement中相同的标识符。

当gofmt从标准输入读取时,即接受一个完整的Go程序,也可以是一个程序片段。程序片段必须是语法上有效的声明列表,语句列表或表达式。格式化这种片段时,gofmt会保留前导缩进和前后的空格,以便Go程序的各个部分可以通过gofmt来格式化。

示例

假设源文件(hello.go)内容如下:

package mainimport "fmt"func main() {    x := 2y := 3// 该行未对齐    str := "Hello Golang~"    var greeting string    greeting = (str)// 本行含有不必要的括号    fmt.Println(greeting)    fmt.Println("x*y =", ((x) * y))// 本行含有不必要的括号    s := []int{1, 3, 5, 6, 7}// 切片    start := 2    sub := s[start:len(s)]// 本行可以优化切片s上界    fmt.Println(s)    fmt.Println(sub)}

检查文件中不必要的括号(如果有,则输出文件名):

gofmt -r '(a) -> a' -l *.go

将会输出hello.go

移除括号:

gofmt -r '(a) -> a' -w *.go

源文件将变成如下格式:

package mainimport "fmt"func main() {    x := 2    y := 3 // 该行未对齐    str := "Hello Golang~"    var greeting string    greeting = str // 本行含有不必要的括号    fmt.Println(greeting)    fmt.Println("x*y =", x*y) // 本行含有不必要的括号    s := []int{1, 3, 5, 6, 7} // 切片    start := 2    sub := s[start:len(s)] // 本行可以优化切片s上界    fmt.Println(s)    fmt.Println(sub)}

注意看带注释的行发生的变化。

当前目录下,从显式切片上界转换为隐式切片上界:

gofmt -r 'α[β:len(α)] -> α[β:]' -w ./

源文件第22行将变成如下:

    sub := s[start:] // 本行可以优化切片上限

代码简化

使用-s调用gofmt时,将尽可能进行以下转换:

以下数组,切片或映射的复合字面量形式:

    []T{T{}, T{}}

将被简化为:

    []T{{}, {}}

以下切片表达式形式:

    s[a:len(s)]

将被简化为:

    s[a:]

以下range形式:

    for x, _ = range v {...}

将被简化为:

    for x = range v {...}

以下range形式:

    for _ = range v {...}

将被简化为:

    for range v {...}

注意:这些改变可能与早期版本的Go不兼容。另外,官方文档中指出:

  • -r标识性能有点慢;

  • -w如果失败,还原后的源文件可能会丢失某些文件属性。

关于“go语言有缩进吗”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

go语言有缩进吗

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

go语言有缩进吗

这篇文章主要介绍“go语言有缩进吗”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言有缩进吗”文章能帮助大家解决问题。go语言有缩进。在go语言中,缩进直接使用gofmt工具格式化即可(gofm
2023-07-04

go语言缩进有影响吗

go语言缩进对程序运行效率没有影响,但却对程序的可读性、可维护性和代码质量有着重要的影响。因此,在编写Go语言代码时,我们应该遵守Go语言的缩进规范,保持代码的一致性和可读性,以提高代码质量和开发效率 。本教程操作环境:windows10系
2023-07-14

go语言有没有缩进

go语言有缩进。在go语言中,缩进直接使用gofmt工具格式化即可(gofmt使用tab进行缩进);gofmt工具会以标准样式的缩进和垂直对齐方式对源代码进行格式化,甚至必要情况下注释也会重新格式化。
2023-05-14

go语言有gc吗

go语言有gc。GC是指垃圾回收,是一种自动内存管理的机制;go语言支持GC,Go中对象内存空间的回收是通过GC机制来完成的。对于Go而言,Go的GC使用的是无分代(对象没有代际之分)、不整理(回收过程中不对对象进行移动与整理)、并发(与用户代码并发执行)的三色标记清扫算法。
2022-11-24

go语言有while吗

这篇“go语言有while吗”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言有while吗”文章吧。go语言中没有wh
2023-07-04

go语言有反射吗

go语言有反射。Go语言提供了一种机制在运行时更新和检查变量的值、调用变量的方法和变量支持的内在操作,但是在编译时并不知道这些变量的具体类型,这种机制被称为反射。Go语言中的反射是由reflect包提供支持的,它定义了两个重要的类型Type和Value任意接口值在反射中都可以理解为由reflect.Type和reflect.Value两部分组成。
2022-11-25

go语言有注解吗

今天小编给大家分享一下go语言有注解吗的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。go语言没有注解。go语言不支持注解的原
2023-07-05

go语言是易语言吗

go语言不是易语言,两者是不同的编程语言。go语言(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。易语言(EPL)是一门以中文作为程序代码编程语言,其以“易”著称,创始人为吴涛;易语言早期版本的名字为E语言,也通常代指与之对应的集成开发环境。
2023-05-14

go语言和js有关联吗

go语言和js有关联。比较明显的关联有:1、Web开发;2、前后端分离;3、交互性;4、编译到JavaScript。本教程操作环境:windows10系统、golang1.20.1版本、DELL G3电脑。Go语言和JavaScript(简
2023-07-14

go语言有指针运算吗

本篇内容介绍了“go语言有指针运算吗”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!go语言没有指针运算。go语言的语法上是不支持指针运算的,
2023-07-04

go语言有垃圾回收吗

go语言有垃圾回收。Go语言自带垃圾回收机制(GC);GC通过独立的进程执行,它会搜索不再使用的变量,并将其释放。在计算中。内存空间包含两个重要的区域:栈区 (Stack) 和堆区 (Heap);栈区一般存储了函数调用的参数、返回值以及局部变量,不会产生内存碎片,由编译器管理,无需开发者管理;而堆区会产生内存碎片,在Go语言中堆区的对象由内存分配器分配并由垃圾收集器回收。
2023-05-14

go语言是后端语言吗

go语言是后端语言。go语言是服务端的编程语言,其方向主要是后端。使用Go语言做后端开发的原因:1、在语言层面具有语法简洁、执行效率高(底层语言)的特点;2、Go语言是主打并发、为并发而生的,其出发点即是瞄准大数据+云计算时代背景下的高并发、分布式应用场景;3、Go语言可以在不同平台直接编译生成可执行程序,基础内存占用很少。
2023-05-14

go语言是编程语言吗

go语言是编程语言。go语言又称Golang,是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go语言的推出,旨在不损失应用程序性能的情况下降低代码的复杂性,具有“部署简单、并发性好、语言设计良好、执行性能好”等优势。
2022-11-28

go语言是动态语言吗

go不是动态语言。go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,其变量(variable)是有明确类型的,编译器也会检查变量类型的正确性;因此在使用变量之前必须声明数据类型需要,语法“var 变量名 变量类型”。
2023-05-14

go语言是静态语言吗

go语言是静态语言。GO是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。静态语言(强类型语言)是编译时变量的数据类型就可以确定的语言;而在Go语言中,变量就是有明确类型的,编译器也会检查变量类型的正确性,声明变量的一般形式为“var name type”。
2023-05-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录