详情页标题前

腾讯云云函数(SCF)开发方法-云淘科技

详情页1

函数形态

Golang 函数形态一般如下所示:

package main
import ( "context" "fmt" "github.com/tencentyun/scf-go-lib/cloudfunction")
type DefineEvent struct { // test event define Key1 string `json:"key1"` Key2 string `json:"key2"`}
func hello(ctx context.Context, event DefineEvent) (string, error) { fmt.Println("key1:", event.Key1) fmt.Println("key2:", event.Key2) return fmt.Sprintf("Hello %s!", event.Key1), nil}
func main() { // Make the handler available for Remote Procedure Call by Cloud Function cloudfunction.Start(hello)}

代码开发时,请注意以下几点:需要使用 package main 包含 main 函数。引用 github.com/tencentyun/scf-go-lib/cloudfunction 库,在编译打包之前,执行 go get github.com/tencentyun/scf-go-lib/cloudfunction。入口函数入参可选0 – 2参数,如包含参数,需 context 在前,event 在后,入参组合有 (),(event),(context),(context,event),具体说明请参见 入参。入口函数返回值可选0 – 2参数,如包含参数,需返回内容在前,error 错误信息在后,返回值组合有 (),(ret),(error),(ret,error),具体说明请参见 返回值。入参 event 和返回值 ret,均需要能够兼容 encoding/json 标准库,可以进行 Marshal、Unmarshal。在 main 函数中使用包内的 Start 函数启动入口函数。

执行方法

在创建 SCF 云函数时,均需要指定执行方法。使用 Golang 开发语言时,执行方法类似 main,此处 main 表示执行的入口文件为编译后的 main 二进制文件。在使用本地 ZIP 文件上传、COS 上传等方法提交代码 ZIP 包时,请确认 ZIP 包的根目录下包含指定的二进制文件,避免因为无法查找到执行文件导致函数创建或执行失败。

package 与 main 函数

在使用 Golang 开发云函数时,需要确保 main 函数位于 main package 中。在 main 函数中,通过使用 cloudfunction 包中的 Start 函数,启动实际处理业务的入口函数。通过 import "github.com/tencentyun/scf-go-lib/cloudfunction",可以在 main 函数中使用包内的 Start 函数。

入口函数

入口函数为通过 cloudfunction.Start 来启动的函数,通常通过入口函数来处理实际业务。入口函数的入参和返回值都需要根据一定的规范编写。

入参

入口函数可以带有0 – 2个入参,例如:

func hello()func hello(ctx context.Context)func hello(event DefineEvent)func hello(ctx context.Context, event DefineEvent)

在带有2个入参时,需要确定 context 参数在前,自定义参数在后。自定义参数可以为 Golang 自带基础数据结构,例如 string,int,也可以为自定义的数据结构,如示例中的 DefineEvent。在使用自定义的数据结构时,需要确定数据结构可以兼容 encoding/json 标准库,可以进行 Marshal、Unmarshal 操作,否则在送入入参时会因为异常而出错。自定义数据结构对应的 JSON 结构,通常与函数执行时的入参对应。在函数调用时,入参的 JSON 数据结构将会转换为自定义数据结构变量并传递和入口函数。注意部分触发器传递的入参事件结构目前已有一部分已定义,可直接使用。您可通过 cloud event 定义 获取 golang 的库并使用。通过在代码中引用 import "github.com/tencentyun/scf-go-lib/events" 来直接使用。如果使用过程中发现问题,可以通过 提交 issue 或联系 在线客服 解决。

返回

入口函数可以带有0 – 2个返回值,例如:

func hello()()func hello()(error)func hello()(string, error)

在定义2个返回值时,需要确定自定义返回值在前,error 返回值在后。自定义返回值可以为 Golang 自带基础数据结构,例如 string,int,也可以为自定义的数据结构。在使用自定义的数据结构时,需要确定数据结构可以兼容 encoding/json 标准库,可以进行 Marshal、Unmarshal 操作,否则在返回至外部接口时会因为异常转换而出错。自定义数据结构对应的 JSON 结构,通常会在函数调用完成返回时,在平台内转换为对应的 JSON 数据结构,作为运行响应传递给调用方函数。
官网1折活动,限时活动,即将结束,速速收藏
同尘科技腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/149683.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云对象存储存储桶标签概述

    概述 存储桶标签是一个键值对(key = value),由标签的键(key)和标签的值(value)与“=”相连组成,例如 group = IT。它可以作为管理存储桶的一个标识,便于用户对存储桶进行分组管理。您可以对指定的存储桶进行标签的设定、查询和删除操作。 规格与限制 标签键限制 以 qcs:、project、项目等开头的标签键为系统预留标签键,系统预留…

    腾讯云 2023年12月9日
  • 阿里云人工智能平台PAI多媒体分析:Python SDK使用说明-云淘科技

    PAI多媒体分析支持通过Python SDK调用通用图像分析和视频分析的各项算法服务。本文为您介绍多媒体分析Python SDK的接口详情以及使用Python SDK调用算法服务和查询结果的示例。 步骤一:安装Python SDK 环境依赖Python 3及其以上版本,安装命令如下。 wget https://ai-service-data.oss-cn-b…

    阿里云人工智能平台PAI 2023年12月10日
  • 阿里云容器服务ACK概述-云淘科技

    您可通过CLI工具使用容器服务。 阿里云命令行工具是用Go语言编写的,基于阿里云OpenAPI打造的,用于管理阿里云资源的工具。通过下载和配置该工具,您可以在一个命令行方式下使用多个阿里云产品。 关于阿里云命令行工具的详细介绍以及安装说明,请参见阿里云CLI文档。 容器服务Kubernetes版支持RESTful 风格的API,下面是开放的API列表。 AP…

    阿里云容器服务 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云RDS数据库便宜易用-云淘科技

    云数据库RDS便宜易用,具有灵活计费、按需变配、即开即用等优点。 灵活计费 RDS提供灵活的计费方式,帮您节省使用成本。 对于短期需求,您可以创建按量付费(按小时计费)的实例,用完可立即释放实例,节省费用。 对于长期需求,您可以创建包年包月的实例,价格更实惠,且购买时长越长,折扣越多。 更多信息,请参见计费方式。 按需变配 在业务初期,您可以购买小规格的RD…

    阿里云数据库 2023年12月9日
  • 阿里云日志服务SLS采集MySQL Binlog-云淘科技

    本文介绍通过Logtail采集MySQL Binlog的操作步骤。 重要 日志服务不再推荐您新建Logtail配置采集MySQL Binlog。您可以使用DataWorks或Flink进行采集。具体操作,请参见MySQL、MySQL数据源。 原理 Logtail内部实现了MySQL Slave节点的交互协议,具体流程如下所示。 Logtail将自己伪装为My…

    2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。