我正在尝试this link中的示例代码,并尝试对其进行操作 谷歌云存储使用来自Go运行时的谷歌云存储客户端应用程序,但示例代码中的以下部分给出错误 &#34;不能使用c(类型&#34; appengine&#34; .Context )作为类型context.Context in function argument: &#34; appengine&#34; .Context不实现context.Context(缺少截止日期方法)&#34; < / EM>
c := appengine.NewContext(r)
hc := &http.Client{
Transport: &oauth2.Transport{
Source: google.AppEngineTokenSource(c, storage.ScopeFullControl),
Base: &urlfetch.Transport{Context: c},
},
}
这里的问题是什么?我怎么解决这个问题?
答案 0 :(得分:5)
错误消息明确指出您尝试传递appengine.Context
类型的值,其中预期类型为context.Context
。
google.AppEngineTokenSource()
函数需要类型为context.Context
的值,而不是您传递的值(类型为appengine.Context
)。
您可以使用以下函数创建此类Context
:
cloud.NewContext(projID string, c *http.Client)
我就是这样做的:
c := appengine.NewContext(r)
hc := &http.Client{}
ctx := cloud.NewContext(appengine.AppID(c), hc)
hc.Transport = &oauth2.Transport{
Source: google.AppEngineTokenSource(ctx, storage.ScopeFullControl),
Base: &urlfetch.Transport{Context: c},
}
答案 1 :(得分:2)
您需要按照appengine
更新google.golang.org/appengine
到#undef UNICODE
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include <WinSock2.h>
#include <WS2tcpip.h>
#include <iostream>
#include <string>
#include <thread>
#pragma comment (lib, "Ws2_32.lib")
#define DEFAULT_BUFLEN 512
#define DEFAULT_PORT "1016"
//Globals
struct addrinfo *result = NULL;
struct addrinfo hints;
//Prototypes
int listenFunction();
int acceptFunction(SOCKET ListenSocket);
:https://github.com/golang/oauth2/#app-engine