这个图片的代码是什么意思?

img


这是什么意思,第一次看go写的程序。
这是什么意思,第一次看go写的程序。

这段代码实现了一个函数 twoSum,它接收一个整数数组 nums 和一个目标整数 target,并返回两个数组元素的下标索引,这两个元素之和等于目标整数。如果没有找到这样的一对元素,则返回 nil。
函数首先初始化一个空 map(哈希表) m,用于存储每个数组元素及其对应的下标索引。然后使用 for 循环遍历数组中的每个元素。在循环内部,计算当前元素与目标整数之差 another,并检查 map 中是否已经存在 another 的键值对。
如果存在,则说明在当前元素之前已经有一个元素与 another 的和为 target,直接返回这两个元素的下标索引即可。否则,将当前元素及其下标索引加入 map 中,以便后续查找。
最后,如果无法找到符合要求的元素组合,就返回 nil。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/1042596
  • 除此之外, 这篇博客: go语言的值传递中的 Go语言的参数只能是值传递 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    值传递是一个拷贝的过程

    Go:值传递

    func bbb(list [4]int){
       for i,_ := range list{
          list[i] = 0
       }
    }
    func main(){
       list := [4]int{1,2,3,4}
       bbb(list)
       fmt.Println(list )   //[1 2 3 4]
    }
    
    

    Javascript: 引用传递

    let list = [1,2,3,4]
    function  bbb(list){
        list.forEach((item,index)=>{
            list[index] = 0
        })
    }
    bbb(list)
    console.log(list)   //[0,0,0,0]
    

    但是Go语言可以通过指针来实现引用传递的作用

    func bbb(p2 *[4]int){    //接受一个[4]int的指针
       for i,_ := range p2{
          p2[i] = 0
       }
    }
    func main(){
       list := [4]int{1,2,3,4}
       p := &list
       bbb(p)     //传递指针
       fmt.Println(list )   //[0 0 0 0]
    }
    

    既然说go语言的参数传递只能是值传递,所以这里实际上是把指针地址拷贝了一份,而两个地址都指向了main函数的变量list的地址,所以才使list的值发生了改变

    在这里插入图片描述

  • 您还可以看一下 高升老师的快速入门Go语言(转行Go开发必修课程)课程中的 如何读取目录小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^