当前位置: 首页 > 面试题库 >

如何从GCP中的另一个Go Cloud函数调用Go Cloud函数

薛修能
2023-03-14
问题内容

目标: 我想使用HTTP触发器重用两个Go函数中的许多Go函数。

我尝试过的方法和重现此问题的步骤:

  1. 在GCP中,创建一个新的Go 1.11 Cloud Function,HTTP触发器
  2. 命名: MyReusableHelloWorld
  3. 在中function.go,粘贴以下内容:
    package Potatoes

    import (   
        "net/http"
    )


    // Potatoes return potatoes
    func Potatoes(http.ResponseWriter, *http.Request) {

    }
  1. 在中go.mod,粘贴以下内容:module example.com/foo
  2. 在要执行的函数中,粘贴以下代码: Potatoes
  3. 单击部署。有用。
  4. 在GCP中创建另一个Go无服务器功能
  5. 在功能上。去,粘贴这个:
    // Package p contains an HTTP Cloud Function.
    package p

    import (
        "encoding/json"
        "fmt"
        "html"
        "net/http"
        "example.com/foo/Potatoes"
    )

    // HelloWorld prints the JSON encoded "message" field in the body
    // of the request or "Hello, World!" if there isn't one.
    func HelloWorld(w http.ResponseWriter, r *http.Request) {
        var d struct {
            Message string `json:"message"`
        }
        if err := json.NewDecoder(r.Body).Decode(&d); err != nil {
            fmt.Fprint(w, "error here!")
            return
        }
        if d.Message == "" {
            fmt.Fprint(w, "oh boy Hello World!")
            return
        }
        fmt.Fprint(w, html.EscapeString(d.Message))
    }
  1. 在中go.mod,粘贴以下内容:module example.com/foo
  2. 在要执行的函数中,粘贴以下代码: HelloWorld
  3. 单击部署。 没用 您有错误: unknown import path "example.com/foo/Potatoes": cannot find module providing package example.com/foo/Potatoes

我还尝试了各种组合来导入模块/软件包。我尝试过没有example.com/部分。

另一个较小的问题: 我想重用的功能可能都在同一个文件中,并且实际上不需要任何触发器,但是似乎没有触发器是不可能的。

我无法实现目标的相关问题和文档:

  1. https://github.com/golang/go/wiki/Modules,部分go.mod

问题答案:

您不能从另一个调用云功能,因为每个功能都独立地位于其自己的容器中。

因此,如果要使用无法从程序包管理器下载的依赖项来部署功能,则需要像此处一样将代码放在一起,然后使用CLI进行部署



 类似资料:
  • 问题内容: 表: 有了答案,我在这里得到了利用$ compile的这种方式 现在,当单击按钮时,我什至调用一个模态,并命令对象使用ng-model 感谢您的帮助,它运作良好。 问题答案: 编辑 :添加了用于演示 $ compile 用法的代码段 在html中,只有一个用于初始化应用程序的标签和一个用于初始化控制器的div。 在controller中,两个链接被创建为简单字符串,但分别具有两个,然后

  • 问题内容: 抱歉,我确定一个基本问题,但似乎无法弄清楚。 说我有这个程序,文件名为: 如何在另一个程序中调用它?我试过了: 而不是“ hello world”,我得到了……过去我通过将第一个文件设为类来做到这一点,但我想知道如何正确导入该函数?如果有帮助,我会在我的真实文件中打印字典 问题答案: 您需要打印调用函数的结果,而不是函数本身: 另外,您可以省略子句,而不是: 如果更方便,也可以使用:

  • 问题内容: 在我的angularJS应用程序中,我有两个模块:模块A和模块B。 如何在模块B中调用该函数? 问题答案: 您需要在 模块A中 定义一个工厂: 然后使用 模块B中* 的工厂: *

  • 问题内容: 我有以下函数,可用于从我的代码中调用Lambda函数。 但是,当我尝试在Lambda函数中使用它时,出现以下错误: 如何从Lambda函数中调用Lambda函数? 我的功能: 问题答案: 使用每个Lambda中都提供的,从另一个Lambda函数中调用Lambda函数非常简单。 我建议首先从 简单的 事情开始。 这是lambda内调用的“ Hello World”: 使用包含一个参数的调

  • 问题内容: 我在下有两个文件,另一个在程序包中包含一些功能的文件称为函数。 我的问题是:如何从中调用函数? 文件1:main.go(位于MyProj / main.go中) 文件2:functions.go(位于MyProj / functions / functions.go中) 问题答案: 您可以通过包的导入路径导入包,并通过包名引用其所有导出的符号( 以大写字母 开头的符号),如下所示:

  • 问题内容: 我可以在python3.2的全局范围内调用嵌套在另一个函数内的函数吗? 这是从外部func1()调用func2()的一种方法吗? 问题答案: 否,除非您返回该函数: 甚至