查看Go文档 中官方AWS Lambda 函数处理程序中的使用全局状态部分https://docs.aws.amazon.com/lambda/latest/dg/golang-handler.html
建议初始化func init()
ie 中的所有全局状态。我们想要在多个 lambda 调用之间共享的任何包级别变量都放在此处。
我的理解是,每次 lambda 容器启动(即冷启动)时都会完成一次初始化。
我的问题是,是否可以使用func main()而不是做同样的事情func init()。由于运行的副作用,
使用func init()基本上使我的处理程序函数( )不可进行单元测试。将代码
移至似乎可以轻松解决此问题。使用vs
有什么副作用吗func LambdaHandlerfunc init()func init()func main()func main()func init()
代码示例
使用 func init()
package main
import (
"log"
"github.com/aws/aws-lambda-go/lambda"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/aws/aws-sdk-go/aws"
)
var invokeCount = 0
var myObjects []*s3.Object
func init() {
svc := s3.New(session.New())
input := &s3.ListObjectsV2Input{
Bucket: aws.String("examplebucket"),
}
result, _ := svc.ListObjectsV2(input) …Run Code Online (Sandbox Code Playgroud)