3、Go中的注释

news2025/1/13 5:22:44

1、注释的作用

在前面我们已经写过第一个GO程序了,该程序的功能很简单,代码量不是很多,也就是几行代码。
但是大家看下面这段代码,代码量比我们写的第一个程序代码量多了很多,代码多了以后,阅读起来非常不容易。

package main  
  
import "fmt"  
  
func binarySearch(arr []int, target int) int {  
  
    left, right := 0, len(arr)-1  
  
    for left <= right {  
       mid := left + (right-left)/2  
  
       if arr[mid] == target {  
          return mid  
       }  
  
       if arr[mid] < target {  
          left = mid + 1  
       } else {  
          right = mid - 1  
       }  
    }  
  
    return -1  
}  
  
func main() {  
    sortedArray := []int{1, 3, 5, 7, 9, 11, 13, 15, 17, 19}  
  
    testTargets := []int{7, 19, 20, 1, 0}  
  
    for _, target := range testTargets {  
       index := binarySearch(sortedArray, target)  
       if index != -1 {  
          fmt.Printf("目标值 %d 在索引 %d 处找到\n", target, index)  
       } else {  
          fmt.Printf("目标值 %d 未找到\n", target)  
       }  
    }  
}

接下来,看下面的代码,由于在一些代码行上有汉字,所以阅读起来就很方便。

package main

  

import "fmt"

  

// binarySearch 实现了在有序整数切片中使用二分查找算法查找目标值的函数

// 参数 arr: 已排序的整数切片

// 参数 target: 要查找的目标值

// 返回值: 目标值的索引,如果未找到则返回 -1

func binarySearch(arr []int, target int) int {

    // 初始化左右边界

    left, right := 0, len(arr)-1

  

    // 当左边界小于等于右边界时继续查找

    for left <= right {

        // 计算中间位置,使用 left + (right-left)/2 避免整数溢出

        mid := left + (right-left)/2

  

        // 如果中间元素等于目标值,直接返回索引

        if arr[mid] == target {

            return mid

        }


        // 如果中间元素小于目标值,说明目标值在右半部分

        if arr[mid] < target {

            left = mid + 1

        } else {

            // 如果中间元素大于目标值,说明目标值在左半部分

            right = mid - 1

        }

    }

  

    // 未找到目标值,返回 -1

    return -1

}

  

// main 函数演示二分查找的使用

func main() {

    // 创建一个有序的整数切片

    sortedArray := []int{1, 3, 5, 7, 9, 11, 13, 15, 17, 19}

  

    // 定义要查找的测试目标值

    testTargets := []int{7, 19, 20, 1, 0}

  

    // 遍历测试目标值,并使用二分查找进行查找

    for _, target := range testTargets {

        // 调用二分查找函数

        index := binarySearch(sortedArray, target)

        // 根据查找结果打印信息

        if index != -1 {

            fmt.Printf("目标值 %d 在索引 %d 处找到\n", target, index)

        } else {

            fmt.Printf("目标值 %d 未找到\n", target)

        }

    }

}

我们通过用自己熟悉的语言(例如,中文),在程序中对某些代码进行标注说明,这就是注释的作用,能够大大增强程序的可读性。
以后,如果是合作开发,其他程序员会经常阅读我们写的代码,当然,我们也会经常阅读别的程序员写的代码,如果代码中加了注释,那么阅读起来就非常容易了。

2、 注释分类

Go 语言支持两种类型的注释:单行注释和多行注释。

1. 单行注释 (Single-line comments)

单行注释用于注释掉一行代码。它以 // 开头,后面的内容将被视为注释,直到该行结束。单行注释可以放在代码行的任何位置,且不会影响代码的执行。

示例:
// 这是一个单行注释
fmt.Println("Hello, World!") // 这是行尾注释

在上面的示例中,// 后面的文本 这是一个单行注释这是行尾注释 都是注释部分,不会被 Go 编译器执行。

2. 多行注释 (Multi-line comments)

多行注释用于注释掉多行代码。它以 /* 开始,以 */ 结束。多行注释可以跨越多行,用于注释大段代码或提供详细的说明。

示例:
/*
这是一个多行注释的例子。
可以用于注释掉多行代码。
这不会影响程序的执行。
*/
fmt.Println("Hello, World!")

在上面的示例中,/**/ 之间的文本会被视为注释,并且可以跨越多行。

小结

  • 单行注释:使用 // 开头,只注释一行内容。
  • 多行注释:使用 /**/,可以注释掉多行内容。

这两种注释方式都有助于程序员在代码中添加说明或者临时注释掉部分代码,提升代码的可读性和可维护性。

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

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

相关文章

【2024年华为OD机试】 (A卷,100分)- 二元组个数(Java JS PythonC/C++)

一、问题描述 以下是题目描述的 Markdown 格式&#xff1a; 题目描述 给定两个数组 a 和 b&#xff0c;若 a[i] b[j]&#xff0c;则称 [i, j] 为一个二元组。求在给定的两个数组中&#xff0c;二元组的个数。 输入描述 第一行输入 m&#xff0c;表示第一个数组的长度。第二…

中学综合素质笔记2

第一章职业理念 第二节学生观 考情提示&#xff1a; 单选题材料分析题 学习要求&#xff1a; 理解、 识记、 一、以人为本的学生观 &#xff08;一&#xff09;学生是发展的人——动态变化 学生的身心发展是有规律的&#xff08;单选&#xff09; 顺序性、阶段性、不平衡…

Spring AMQP-保证消费者消息的可靠性

为什么要保证消息的可靠性&#xff1f; 当MQ向消费者发送一个消息之后需要得到消费者的状态&#xff0c;因为消息并不一定就真的被消费者给消费了&#xff0c;可能在消费的过程中出现了一些意外&#xff0c;比如 1. 网络问题 2. 消息转换有问题 3. 消费者本身的业务处理有问题 …

AI刷题-数位长度筛选问题、数值生成与运算问题

目录 一、数位长度筛选问题 问题描述 测试样例 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 关键点 最终代码&#xff1a; 运行结果&#xff1a; 二、数值生成与运算问题 问题描述 测试样例 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤…

算法学习(24)—— BFS解决拓扑排序

关于拓扑排序 ①有向无环图&#xff08;DAG图&#xff09; 就跟它的名字一样&#xff0c;有方向但是没有环的图&#xff0c;如下图&#xff1a;我们了解下入度和出度&#xff0c;二者都是针对一个点来说的&#xff0c;就以上图为例入度&#xff1a;表示有多少条边指向一个点&am…

【深度学习入门_基础篇】概率论

开坑本部分主要为基础知识复习&#xff0c;新开坑中&#xff0c;学习记录自用。 学习目标&#xff1a; 随机事件与概率、随机变量及其分布、多维随机变量及其分布、大数定律与中心极限定理。 强烈推荐此视频&#xff1a; 概率论_麻省理工公开课 废话不多说&#xff0c;直接…

Gitlab-Runner配置

原理 Gitlab-Runner是一个非常强大的CI/CD工具。它可以帮助我们自动化执行各种任务&#xff0c;如构建、测试和部署等。Gitlab-Runner和Gitlab通过API通信&#xff0c;接收作业并提交到执行队列&#xff0c;Gitlab-Runner从队列中获取作业&#xff0c;并允许在不同环境下进行作…

多并发发短信处理(头条项目-07)

1 pipeline操作 Redis数据库 Redis 的 C/S 架构&#xff1a; 基于客户端-服务端模型以及请求/响应协议的 TCP服务。客户端向服务端发送⼀个查询请求&#xff0c;并监听Socket返回。通常是以 阻塞模式&#xff0c;等待服务端响应。服务端处理命令&#xff0c;并将结果返回给客…

OSPF - 1类LSA(Router-LSA)

前篇博客有对常用LSA的总结 1类LSA是OSPF计算最原始的材料&#xff0c;他会泛洪发给所有的路由器 LSA是包含在LSU中的&#xff0c;一条LSU能够携带多条LSA options位所有LSA都会有&#xff0c;用于标记起源于什么类型的区域&#xff0c;具体查看文章【邻居建立】 flags位是一…

pdf提取文本,表格以及转图片:spire.pdf

文章目录 &#x1f412;个人主页&#xff1a;信计2102罗铠威&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380; 1. pdfbox1.1导入pdfbox 的maven依赖1.1 提取文本1.2 提取文本表格&#xff08;可自行加入逻辑处理&#xff09;1.3 pdf转换成图片代码&…

_STM32关于CPU超频的参考_HAL

MCU: STM32F407VET6 官方最高稳定频率&#xff1a;168MHz 工具&#xff1a;STM32CubeMX 本篇仅仅只是提供超频&#xff08;默认指的是主频&#xff09;的简单方法&#xff0c;并未涉及STM32超频极限等问题。原理很简单&#xff0c;通过设置锁相环的倍频系数达到不同的频率&am…

图片和短信验证码(头条项目-06)

1 图形验证码接口设计 将后端⽣成的图⽚验证码存储在redis数据库2号库。 结构&#xff1a; {img_uuid:0594} 1.1 创建验证码⼦应⽤ $ cd apps $ python ../../manage.py startapp verifications # 注册新应⽤ INSTALLED_APPS [django.contrib.admin,django.contrib.auth,…

解决idea中无法拖动tab标签页的问题

1、按 Ctrl Alt S 打开设置&#xff0c;找到路径 File | Settings | Appearance & Behavior | Appearance 2、去掉勾选 Drag-and-drop with Alt pressed only 即可

单片机(MCU)-简单认识

简介&#xff1a; 内部集成了CPU&#xff0c;RAM&#xff0c;ROM&#xff0c;定时器&#xff0c;中断系统&#xff0c;通讯接口等一系列电脑的常用硬件功能。 单片机的任务是信息采集&#xff08;依靠传感器&#xff09;&#xff0c;处理&#xff08;依靠CPU&#xff09;&…

QT c++ 样式 设置 按钮(QPushButton)的渐变色美化

上一篇文章中描述了标签的渐变色美化,本文描述按钮的渐变色美化。 1.头文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> //#include "CustomButton.h"#include <QVBoxLayout> #include <QLinearGradient> #include <QPushButton&…

【物流管理系统 - IDEAJavaSwingMySQL】基于Java实现的物流管理系统导入IDEA教程

有问题请留言或私信 步骤 下载项目源码&#xff1a;项目源码 解压项目源码到本地 打开IDEA 左上角&#xff1a;文件 → 新建 → 来自现有源代码的项目 找到解压在本地的项目源代码文件&#xff0c;点击确定&#xff0c;根据图示步骤继续导入项目 查看项目目录&#xff…

【数据结构-堆】【二分】力扣3296. 移山所需的最少秒数

给你一个整数 mountainHeight 表示山的高度。 同时给你一个整数数组 workerTimes&#xff0c;表示工人们的工作时间&#xff08;单位&#xff1a;秒&#xff09;。 工人们需要 同时 进行工作以 降低 山的高度。对于工人 i : 山的高度降低 x&#xff0c;需要花费 workerTimes…

如何用SQL语句来查询表或索引的行存/列存存储方式|OceanBase 用户问题集锦

一、问题背景 自OceanBase 4.3.0版本起&#xff0c;支持了列存引擎&#xff0c;允许表和索引以行存、纯列存或行列冗余的形式创建&#xff0c;且这些存储方式可以自由组合。除了使用 show create table命令来查看表和索引的存储类型外&#xff0c;也有用户询问如何通过SQL语句…

CDA数据分析师一级经典错题知识点总结(3)

1、SEMMA 的基本思想是从样本数据开始&#xff0c;通过统计分析与可视化技术&#xff0c;发现并转换最有价值的预测变量&#xff0c;根据变量进行构建模型&#xff0c;并检验模型的可用性和准确性。【强调探索性】 2、CRISP-DM模型Cross Industry Standard Process of Data Mi…

算法题(32):三数之和

审题&#xff1a; 需要我们找到满足以下三个条件的所有三元组&#xff0c;并存在二维数组中返回 1.三个元素相加为0 2.三个元素的下标不可相同 3.三元组的元素不可相同 思路&#xff1a; 混乱的数据不利于进行操作&#xff0c;所以我们先进行排序 我们可以采取枚举的方法进行解…