广告
返回顶部
首页 > 资讯 > 精选 >go语言有缩进吗
  • 935
分享到

go语言有缩进吗

2023-07-04 16:07:23 935人浏览 安东尼
摘要

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

这篇文章主要介绍“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语言有缩进吗”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: go语言有缩进吗

本文链接: https://www.lsjlt.com/news/346579.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • go语言有缩进吗
    这篇文章主要介绍“go语言有缩进吗”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言有缩进吗”文章能帮助大家解决问题。go语言有缩进。在go语言中,缩进直接使用gofmt工具格式化即可(gofm...
    99+
    2023-07-04
  • go语言缩进有影响吗
    go语言缩进对程序运行效率没有影响,但却对程序的可读性、可维护性和代码质量有着重要的影响。因此,在编写Go语言代码时,我们应该遵守Go语言的缩进规范,保持代码的一致性和可读性,以提高代码质量和开发效率 。本教程操作环境:windows10系...
    99+
    2023-07-14
  • go语言有没有缩进
    go语言有缩进。在go语言中,缩进直接使用gofmt工具格式化即可(gofmt使用tab进行缩进);gofmt工具会以标准样式的缩进和垂直对齐方式对源代码进行格式化,甚至必要情况下注释也会重新格式化。本教程操作环境:windows7系统、G...
    99+
    2023-05-14
    go语言 Golang Go
  • go语言有gc吗
    本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。GC机制是在Java语言被广泛使用之后所火起来的,像后来的脚本语言Python都支持GC,GO也支持GC。Go语言和C/C++语言的一个显著的特点是Go中对象内存...
    99+
    2022-11-24
    Golang go语言 Go
  • go语言有while吗
    这篇“go语言有while吗”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言有while吗”文章吧。go语言中没有wh...
    99+
    2023-07-04
  • go语言有反射吗
    本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。Go语言提供了一种机制在运行时更新和检查变量的值、调用变量的方法和变量支持的内在操作,但是在编译时并不知道这些变量的具体类型,这种机制被称为反射。反射也可以让我们...
    99+
    2022-11-25
    Go Golang go语言
  • go语言有注解吗
    今天小编给大家分享一下go语言有注解吗的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。go语言没有注解。go语言不支持注解的原...
    99+
    2023-07-05
  • go语言是易语言吗
    go语言不是易语言,两者是不同的编程语言。go语言(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。易语言(EPL)是一门以中文作为程序代码编程语言,其以“易”著称,创始人为吴涛;易语言早...
    99+
    2023-05-14
    易语言 go语言 Golang
  • go语言有垃圾回收吗
    go语言有垃圾回收。Go语言自带垃圾回收机制(GC);GC通过独立的进程执行,它会搜索不再使用的变量,并将其释放。在计算中。内存空间包含两个重要的区域:栈区 (Stack) 和堆区 (Heap);栈区一般存储了函数调用的参数、返回值以及局部...
    99+
    2023-05-14
    垃圾回收 Go Golang go语言
  • go语言有指针运算吗
    本篇内容介绍了“go语言有指针运算吗”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!go语言没有指针运算。go语言的语法上是不支持指针运算的,...
    99+
    2023-07-04
  • go语言和js有关联吗
    go语言和js有关联。比较明显的关联有:1、Web开发;2、前后端分离;3、交互性;4、编译到JavaScript。本教程操作环境:windows10系统、golang1.20.1版本、DELL G3电脑。Go语言和JavaScript(简...
    99+
    2023-07-14
  • go语言是编程语言吗
    本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型、并...
    99+
    2022-11-28
    Go Golang go语言
  • go语言是系统语言吗
    go语言是系统语言。Go语言是一门系统级语言,它为解决大型系统开发过程中的实际问题而设计,支持并发、规范统一、简单优雅,性能强大;它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C 等编译型语言的性能与安全性”。Go语言专门...
    99+
    2023-05-14
    Golang go语言
  • go语言是底层语言吗
    go语言不是底层语言,go语言被广泛认为是一种系统级编程语言,更接近于高级语言,而不是底层语言。底层语言通常是指与硬件直接交互的编程语言,它们提供了对计算机底层操作的精细控制,这些语言往往需要程序员手动管理内存、处理输入输出等底层细节,因此...
    99+
    2023-07-17
  • go语言是后端语言吗
    go语言是后端语言。go语言是服务端的编程语言,其方向主要是后端。使用Go语言做后端开发的原因:1、在语言层面具有语法简洁、执行效率高(底层语言)的特点;2、Go语言是主打并发、为并发而生的,其出发点即是瞄准大数据+云计算时代背景下的高并发...
    99+
    2023-05-14
    go语言
  • go语言是静态语言吗
    go语言是静态语言。GO是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。静态语言(强类型语言)是编译时变量的数据类型就可以确定的语言;而在Go语言中,变量就是有明确类型的,编译器也会检查变量类型的正确性,声...
    99+
    2023-05-14
    Golang go语言
  • go语言是机器语言吗
    go语言不是机器语言;机器语言是低级语言,而go语言是一种高级语言。Go语言是Google公司在2009年开源的一门高级编程语言,它为解决大型系统开发过程中的实际问题而设计,支持并发、规范统一、简单优雅,性能强大;它的主要目标是“兼具 Py...
    99+
    2023-05-14
    go语言 Golang
  • go语言是动态语言吗
    go不是动态语言。go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,其变量(variable)是有明确类型的,编译器也会检查变量类型的正确性;因此在使用变量之前必须声明数据类型需要,语法“var 变量...
    99+
    2023-05-14
    动态语言 go语言 Golang
  • go语言开源吗
    go语言是开源。go语言于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后来追加了Windows系统下的实现;go语言采用的是BSD开源协议。BSD开源协议是一个给于使用者很大自由的协议...
    99+
    2023-05-14
    Go Golang go语言
  • go语言属于底层语言吗
    go语言不属于底层语言。底层语言又叫低级语言,指实现效率低、执行效率高、对硬件的可控性强、目标代码小、可维护性差、可移植性差的语言。而go语言是一门高级编程语言,它为解决大型系统开发过程中的实际问题而设计,支持并发、规范统一、简单优雅,性能...
    99+
    2023-05-14
    Go go语言 Golang
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作