首页 > 其他分享 >3.1 编辑器和集成开发环境

3.1 编辑器和集成开发环境

时间:2024-06-02 09:33:30浏览次数:11  
标签:集成 格式化 代码 gofmt go 编辑器 3.1 Go fmt

3.1.1 编辑器、集成开发环境与其它工具

因为 Go 语言还是一门相对年轻的编程语言,所以不管是在集成开发环境(IDE)还是相关的插件方面,发展都不是很成熟。不过目前还是有一些 IDE 能够较好地支持 Go 的开发,有些开发工具甚至是跨平台的,你可以在 Linux、Mac OS X 或者 Windows 下工作。

你可以通过查阅 编辑器和 IDE 扩展 页面来获取 Go 开发工具的最新信息。

我选择下载IDEAJ的插件=。=

3.1.2 调试器

Go 在这方面的发展还不是很完善。目前可用的调试器是 gdb,最新版均以内置在集成开发环境 LiteIDE 和 GoClipse 中,但是该调试器的调试方式并不灵活且操作难度较大。

如果你不想使用调试器,你可以按照下面的一些有用的方法来达到基本调试的目的:

  1. 在合适的位置使用打印语句输出相关变量的值(print/printlnfmt.Print/fmt.Println/fmt.Printf)。
  2. fmt.Printf 中使用下面的说明符来打印有关变量的相关信息:
    • %+v 打印包括字段在内的实例的完整信息
    • %#v 打印包括字段和限定类型名称在内的实例的完整信息
    • %T 打印某个类型的完整说明
  3. 使用 panic 语句(第 13.2 节)来获取栈跟踪信息(直到 panic 时所有被调用函数的列表)。
  4. 使用关键字 defer 来跟踪代码执行过程(第 6.4 节)。

3.1.3 构建并运行go

在大多数 IDE 中,每次构建程序之前都会自动调用源码格式化工具 gofmt 并保存格式化后的源文件。如果构建成功则不会输出任何信息,而当发生编译时错误时,则会指明源码中具体第几行出现了什么错误,如:a declared and not used。一般情况下,你可以双击 IDE 中的错误信息直接跳转到发生错误的那一行。

如果程序执行一切顺利并成功退出后,将会在控制台输出 Program exited with code 0

从 Go 1 版本开始,使用 Go 自带的更加方便的工具来构建应用程序:

  • go build 编译并安装自身包和依赖包
  • go install 安装自身包和依赖包

3.1.4 格式化代码

格而引发无休止的争论,浪费大量宝贵的开发时间,因此他们制作了一个工具:go fmtgofmt)。这个工具可以将你的源代码格式化成符合官方统一标准的风格,属于语法风格层面上的小型重构。遵循统一的代码风格是 Go 开发中无可撼动的铁律,因此你必须在编译或提交版本管理系统之前使用 gofmt 来格式化你的代码。

在命令行输入 gofmt –w program.go 会格式化该源文件的代码然后将格式化后的代码覆盖原始内容(如果不加参数 -w 则只会打印格式化后的结果而不重写文件);gofmt -w *.go 会格式化并重写所有 Go 源文件;gofmt map1 会格式化并重写 map1 目录及其子目录下的所有 Go 源文件。

gofmt 也可以通过在参数 -r 后面加入用双引号括起来的替换规则实现代码的简单重构,规则的格式:<原始内容> -> <替换内容>

实例:

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

上面的代码会将源文件中没有意义的括号去掉。

gofmt -r 'a[n:len(a)] -> a[n:]' –w *.go

上面的代码会将源文件中多余的 len(a) 去掉。( 译者注:了解切片(slice)之后就明白这为什么是多余的了

gofmt –r 'A.Func1(a,b) -> A.Func2(b,a)' –w *.go

上面的代码会将源文件中符合条件的函数的参数调换位置。

3.1.5 生成代码文档

go doc 工具会从 Go 程序和包文件中提取顶级声明的首行注释以及每个对象的相关注释,并生成相关文档。

它也可以作为一个提供在线文档浏览的 web 服务器,http://golang.org 就是通过这种形式实现的。

一般用法

  • go doc package 获取包的文档注释,例如:go doc fmt 会显示使用 godoc 生成的 fmt 包的文档注释。
  • go doc package/subpackage 获取子包的文档注释,例如:go doc container/list
  • go doc package function 获取某个函数在某个包中的文档注释,例如:go doc fmt Printf 会显示有关 fmt.Printf() 的使用说明。

这个工具只能获取在 Go 安装目录下 ../go/src 中的注释内容。此外,它还可以作为一个本地文档浏览 web 服务器。在命令行输入 godoc -http=:6060,然后使用浏览器打开 http://localhost:6060 后,你就可以看到本地文档浏览服务器提供的页面。

godoc 也可以用于生成非标准库的 Go 源码文件的文档注释(第 9.6 章)。

如果想要获取更多有关 godoc 的信息,请访问该页面:http://golang.org/cmd/godoc/(在线版的第三方包 godoc 可以使用 Go Walker)。

3.1.6 其他工具

Go 自带的工具集主要使用脚本和 Go 语言自身编写的,目前版本的 Go 实现了以下三个工具:

  • go install 是安装 Go 包的工具,类似 Ruby 中的 rubygems。主要用于安装非标准库的包文件,将源代码编译成对象文件。
  • go fix 用于将你的 Go 代码从旧的发行版迁移到最新的发行版,它主要负责简单的、重复的、枯燥无味的修改工作,如果像 API 等复杂的函数修改,工具则会给出文件名和代码行数的提示以便让开发人员快速定位并升级代码。Go 开发团队一般也使用这个工具升级 Go 内置工具以及 谷歌内部项目的代码。go fix 之所以能够正常工作是因为 Go 在标准库就提供生成抽象语法树和通过抽象语法树对代码进行还原的功能。该工具会尝试更新当前目录下的所有 Go 源文件,并在完成代码更新后在控制台输出相关的文件名称。
  • go test 是一个轻量级的单元测试框架(第 13 章)。

标签:集成,格式化,代码,gofmt,go,编辑器,3.1,Go,fmt
From: https://www.cnblogs.com/kuro-liang/p/18226788

相关文章

  • AI编程新手快速体验SpringCloud Alibaba 集成AI功能
    上周六写了一篇文章  震撼发布!SpringAI框架重磅上线,Java集成AI轻松搞定!   部分同学可能没有科学上网的条件,本地ollama集成又比较笨重。趁着周六,写一篇基于SpringCloudAlibaba集成AI的文章。先简单介绍下SpringCloudAlibabaAI。SpringCloudAlibabaAI基......
  • java编辑器中如何调试程序?
    目录如何调试java程序?待续、更新中如何调试java程序?1看错误信息2相应位置输入输出信息:System.out.println("测试信息1");以此查看哪条语句未进行输入待续、更新中1顿号、:先使用ctrl+.,再使用一遍切回2下标:21==2~1~3上标:......
  • hbuilderx集成集中式版本控制系统SVN
    前提条件:1.下载最新的hbuilderxhttps://www.dcloud.io/hbuilderx.html2.安装Tortorisesvn客户端,特别注意安装时一定要安装commandlineclenttools3.解压hbuilderx并启动工具-----插件安装4.导入svn项目5.输入svn源代码仓库地址:例如svn://gitee.com/ossbar/study-mongo......
  • 【Linux】如何利用linux项目自动化构建工具-make/Makefile以及vim编辑器构建两个小程
    1.倒计时小程序首先我们Linux中创建目录test1,该目录中包含了makefile文件,和main.c文件(该文件是源文件用于编写倒计时程序的代码)再进行依赖方法和依赖关系的确定: 利用vim编辑器编辑makefile文件:注意:在依赖方法前面加@的作用是,执行make指令后,将对应的依赖方法不显示在屏幕......
  • FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp
    ​《FFmpeg开发实战:从零基础到短视频上线》一书介绍了JPEG、PNG、GIF等图片格式,以及如何通过FFmpeg把视频画面转存为这些格式。除了上述这些常见的图片格式,还有较新的WebP格式,它由VP8视频标准派生而来,VP8演进的视频格式叫做WebM,图片格式则叫WebP。若想让FFmpeg支持WebP图片的编......
  • Spring Boot集成sse实现chatgpt流式交互
    1.什么是sse?SSE(Server-SentEvents)是一种允许服务器向客户端推送实时数据的技术,它建立在HTTP和简单文本格式之上,提供了一种轻量级的服务器推送方式,通常也被称为“事件流”(EventStream)。他通过在客户端和服务端之间建立一个长连接,并通过这条连接实现服务端和客户端的消息实......
  • vue项目获取富文本编辑器wangEditor内容导出为word(html转word格式并下载)
    一、开发问题html-doc-js,只能处理简单的富文本导出为word,对于编辑器中部分图文和样式会不生效,而wangEditor默认设置有下图这么多,所以要自己尝试找替代方案去解决html内容。例如:列表、表情emoji、高度、css样式、图片、视频、表格、代码块等。问题1:css样式不生效,解......
  • Spring Boot 开发 -- 集成 Prometheus 进行高效监控
    引言随着微服务架构的流行,对服务的监控和管理变得尤为重要。Prometheus作为一个开源的监控和告警工具,以其强大的数据采集、存储和查询能力,受到了众多开发者的青睐。SpringBoot作为Java领域快速构建微服务的框架,与Prometheus的结合可以实现对SpringBoot应用的实时监控。本......
  • 适用于 Windows 电脑 的 15 款最佳免费 PDF 编辑器软件下载
    PDF工具可帮助您创建、管理和保护PDF文件。使用它们来简化PDF中涉及的复杂任务。以下是精选的热门PDF工具列表,其中包含流行的功能和最新的PDF编辑器下载链接。此列表包含免费(开源)和商业(付费)工具。适用于WindowsPC或Mac的最佳免费PDF编辑器下载#1)奇客PDF......
  • Failed to resolve org.junit.jupiter:junit-jupiter-engine:5.3.1
    跟着尚硅谷学SSM测试这块老不对就没按视频里的用的junit4平替了今天的@BeforeEach平替不了搜了半天找不到解决方法就把报错的都整到依赖里了然后就好了也不知道具体咋回事<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit......