一、下载安装
建议先阅读下https://golang.org/doc/install,不读直接向下走也可以
https://golang.org/dl/
https://golang.google.cn/dl/
上面2个地址二选一,下载.msi安装包
具体下载哪个版本,我也不清楚,参考https://cloud.tencent.com/developer/article/1836994,建议1.16.x版本
1.10.8是个特殊版本,Go 1.10.x 不再支持 10.3 以下版本的 FreeBSD 和 8.0 以下版本的 NetBSD。并且,这个版本也是支持 OpenBSD 6.0、OS X 10.9 以及 Windows XP 和 Windows Vista 的最后一个版本(1.10.8)。而腾讯云GO SDK需要Go 1.9 版本及以上。
https://dl.google.com/go/go1.10.8.windows-386.msi
https://dl.google.com/go/go1.10.8.windows-amd64.msi
https://golang.google.cn/dl/go1.16.15.windows-386.msi
https://golang.google.cn/dl/go1.16.15.windows-amd64.msi
安装很简单,一直下一步→下一步……直到结束,全部采用默认设置。
安装完成后打开CMD命令行执行go env和go version
注意看GOPATH默认是C:UsersAdministratorgo
实际查看不存在C:UsersAdministratorgo,需要执行mkdir C:UsersAdministratorgo创建出来
二、编辑器的选用
①cmd命令行
上图echo. > hello.go是创建一个空文件hello.go出来,notepad hello.go是用记事本打开这个空文件,然后填入如下代码
package main
import "fmt"
func main() {
fmt.Printf("hello, worldn")
}
上面fmt.Printf("hello, worldn")用fmt.Println("hello, world")也可以
注意,如上图如果把main()后面的{换行会报错,这是go的语法,必须把{跟在函数名()后面
关于编译:
1)go build -o .exe目标文件路径 .go源代码文件路径,例如go build -o c:hello.exe hello.go
go build命令可以将Go语言程序代码编译成二进制的可执行文件,但是需要我们手动运行该二进制文件
2)go run .go源代码文件路径,例如go run hello.go
go run命令则更加方便,它会在编译后直接运行Go语言程序,编译过程中会产生一个临时文件,但不会生成可执行文件,这个特点很适合用来调试程序
②notepad (简称npp,官网notepad-plus-plus.org )
≤Go 1.10.8的版本配合notepad 6.9的GOnpp插件(>6.9版本的npp没有这个插件),可以直接在npp里进行调试。
插件安装:浏览器访问http://sourceforge.net/projects/gonpp/files/GOnpp_1.2_UNI.zip/download跳转到下面的链接
https://nchc.dl.sourceforge.net/project/gonpp/GOnpp_1.2_UNI.zip
解压GOnpp_1.2_UNI.zip把GOnpp.dll放到notepad 安装目录里的plugins目录里即可
三、给notepad 安装go语言插件让关键词高亮显示
上图里的关键字高亮效果就是按如下步骤配置的
①下载notepad 的golang支持包,下载地址:
http://notepad-plus.sourceforge.net/commun/userDefinedLang/go.zip
②解压go.zip,目录中有2个文件userDefineLang_Go.xml和go.xml
③把go.xml复制到notepad 目录的pluginsAPIs文件夹中,如果没有APIs文件夹,自己创建一个
④打开userDefineLang_Go.xml文件,去掉文件第一行和最后一行的注释,注意是去掉注释不是删除那一行
然后“语言”→“自定义语言”→“自定义语言格式”→“导入”,选择userDefineLang_Go.xml导入并重新打开notepad
四、使用GO SDK调用DescribeCdnDomainLogs接口
①根据前三步准备好环境
②阅读文档https://cloud.tencent.com/document/sdk/Go
③下载源码
我用了两个版本
github.com/tencentcloud/tencentcloud-sdk-go v3.0.71 incompatible
以及
github.com/tencentcloud/tencentcloud-sdk-go v3.0.233 incompatible
v3.0.71的调用RunInstances接口时报错如下
sdk会不定期更新,更新后,可能之前的代码跑的时候一些参数就不被正确识别了,得更新sdk到最新版,我在python sdk里也遇到过类似问题
下载SDK,可以直接在github下载.zip包
https://github.com/TencentCloud/tencentcloud-sdk-go/releases
解压到C:Gosrcgithub.comtencentcloud 目录,把sdk文件夹重命名为tencentcloud-sdk-go,使路径跟api explorer生成的代码路径一致,确保循着路径能找到common、common/errors、common/profile
也可以用go get 配代理下载github上的东西会快一些
首先需要安装windows git,否则会报错
Git安装文件下载地址:https://git-scm.com/download/win
安装过程这里不赘述,可以百度下。
安装好git后再安装下windows go,下载安装go1.16.15.windows-amd64.msi
然后执行go env查看是没有启用GO111MODULE的,GOPROXY也不是我们要的地址,此时可以执行命令设置成我们需要的
代码语言:javascript复制我安装环境一直卡着不动,后来查资料才解决
安装好go后,需要设置GO111MODULE和GOPROXY,才能使用go get快速把sdk下载下来
内网使用内网域名mirrors.tencentyun.com
set GO111MODULE=on
set GOPROXY=http://mirrors.tencentyun.com/go/
go get -u -v github.com/tencentcloud/tencentcloud-sdk-go
上面命令只在当前命令窗口生效,要永久生效得用这2行命令
go env -w GO111MODULE=on
go env -w GOPROXY=http://mirrors.tencentyun.com/go/,direct
公网使用公网域名mirrors.tencent.com
set GO111MODULE=on
set GOPROXY=http://mirrors.tencent.com/go/
go get -u -v github.com/tencentcloud/tencentcloud-sdk-go
上面命令只在当前命令窗口生效,要永久生效得用这2行命令
go env -w GO111MODULE=on
go env -w GOPROXY=http://mirrors.tencent.com/go/,direct
下载的东西在C:UsersAdministratorgopkgmodgithub.com目录里
go get不加 -v参数,看不到过程
go get -u -v github.com/tencentcloud/tencentcloud-sdk-go 拉下来的东西,从v1.0.170版本开始,在examples同级目录没有tecentcloud目录了,因为v1.0.170开始 ,只需下载基础包和对应的产品包(如cvm)即可,不需要下载全部的产品:
1. 安装公共基础包:
```
go get -v github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common@latest
```
2. 安装对应的产品包(如cvm):
```
go get -v github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm@latest
```
下载下来的东西在C:UsersAdministratorgopkgmodgithub.comtencentcloud 目录,其中带版本号的子目录里面有examples目录,是只读的,编辑不了,需要先去掉只读
下载下来的东西在C:UsersAdministratorgopkgmodgithub.comtencentcloud 目录,其中带版本号的子目录里面有examples目录,是只读的,编辑不了,需要先去掉只读
下载下来的东西在C:UsersAdministratorgopkgmodgithub.comtencentcloud 目录,其中带版本号的子目录里面有examples目录,是只读的,编辑不了,需要先去掉只读
需要注意的是,如果不执行go env -w "GOFLAGS"="-mod=mod" ,go build的时候会出现missing go.sum entry...的报错
需要注意的是,如果不执行go env -w "GOFLAGS"="-mod=mod" ,go build的时候会出现missing go.sum entry...的报错
需要注意的是,如果不执行go env -w "GOFLAGS"="-mod=mod" ,go build的时候会出现missing go.sum entry...的报错
④在examples目录创建cdn目录,在cdn目录创建v20180606目录,并通过api explorer工具准备好DescribeCdnDomainLogs.go放入v20180606目录。
https://console.cloud.tencent.com/api/explorer?Product=cdn&Version=2018-06-06&Action=DescribeCdnDomainLogs
⑤cd C:UsersAdministratorgosrcgithub.comtencentcloudtencentcloud-sdk-goexamplescdnv20180606
⑥分别执行go build DescribeCdnDomainLogs.go和DescribeCdnDomainLogs.exe
或者直接执行go run DescribeCdnDomainLogs.go即可
五、在DescribeCdnDomainLogs.go的代码基础上改成一个web程序
import里多了"net/http"和"log",主体部分多了http.HandleFunc( )和http.ListenAndServe( )
如下代码可复制
package main
import (
"fmt"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
cdn "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn/v20180606"
"net/http"
"log"
)
func main(){
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){
原main(){$代码}的“$代码”塞在这里,并注释最后一句话,即//fmt.Printf("%s", response.ToJsonString())
fmt.Println("hello, your request path is:", r.URL.Path)//打印浏览器请求路径
fmt.Fprintf(w,"hello, your request result is : %sn",response.ToJsonString())//输出请求接口的结果
})
err := http.ListenAndServe(":9090", nil) //设置监听的端口
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
改造完以后保存为web.go,跟DescribeCdnDomainLogs.go放在同一目录,执行go build web.go,然后运行web.exe后另开一个cmd命令行执行netstat -ano|findstr 9090查看监听成功了,然后再打开浏览器访问http://127.0.0.1:9090/test就可以看到请求接口的结果,同时会在运行web.exe的命令行显示浏览器请求的URL后半部分路径,别的路径也行,比如http://127.0.0.1:9090/ceshi。
由于是监听在0.0.0.0:9090上的,所以通过外网IP也可以访问