1、注释的作用
在前面我们已经写过第一个GO程序了,该程序的功能很简单,代码量不是很多,也就是几行代码。
但是大家看下面这段代码,代码量比我们写的第一个程序代码量多了很多,代码多了以后,阅读起来非常不容易。
            
            
              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)  
       }  
    }  
}接下来,看下面的代码,由于在一些代码行上有汉字,所以阅读起来就很方便。
            
            
              go
              
              
            
          
          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)
单行注释用于注释掉一行代码。它以 // 开头,后面的内容将被视为注释,直到该行结束。单行注释可以放在代码行的任何位置,且不会影响代码的执行。
示例:
            
            
              go
              
              
            
          
          // 这是一个单行注释
fmt.Println("Hello, World!") // 这是行尾注释在上面的示例中,// 后面的文本 这是一个单行注释 和 这是行尾注释 都是注释部分,不会被 Go 编译器执行。
2. 多行注释 (Multi-line comments)
多行注释用于注释掉多行代码。它以 /* 开始,以 */ 结束。多行注释可以跨越多行,用于注释大段代码或提供详细的说明。
示例:
            
            
              go
              
              
            
          
          /*
这是一个多行注释的例子。
可以用于注释掉多行代码。
这不会影响程序的执行。
*/
fmt.Println("Hello, World!")在上面的示例中,/* 和 */ 之间的文本会被视为注释,并且可以跨越多行。
小结
- 单行注释 :使用 //开头,只注释一行内容。
- 多行注释 :使用 /*和*/,可以注释掉多行内容。
这两种注释方式都有助于程序员在代码中添加说明或者临时注释掉部分代码,提升代码的可读性和可维护性。