这是我参与「第五届青训营」伴学笔记创作活动的第 3 天
GORM
这种写法是什么意思map[string]interface{}
显而易见,这是个字典,但为什么后面是一个接口呢?其实,后面表示的不是接口,而是一个接口值,而在go中,接口值并不是强类型,而你初次见到这个的用法的时候,应该是类似于下面的情况
db.Where(map[string]interface{}{"name": "jinzhu", "age": 20}).Find(&users)
从上面可以看到,值得位置可以是字符串还可以是整形
如何在wsl2中安装Kitex
遇到“E505:“/usr/bin/yum“ is read-only(add !to override)”问题怎么解决
1.首先要强制退出
:q!
2.退出后再执行
:sudo !!
3.再次编辑内容
vim ......
4.最后保存即可
:wq!
Kitex
关于这个错误怎么解决parse echo.thrift err: parse error near CarriageReturnLineFeed (line 2 symbol 0 - line 2 symbol 1): "\n"
这个错误八成是因为你在复制黏贴掘金之类的网站的时候,因为程序员比较捞,复制的内容里存在看不见的字符,只要别用记事本,都能看见,删掉就好
这个错误怎么解决can only use path@version syntax with 'go get' go install
这个是因为你版本太低了导致的估计,我用1.13版的时候遇到的这个错误,但用1.18版就没有了
这个错误怎么解决go: github.com/cloudwego/kitex/tool/cmd/kitex@latest: module github.com/cloudwego/kitex/tool/cmd/kitex: Get "proxy.golang.org/github.com/…": dial tcp 172.217.160.81:443: connect: connection refused
这个错误其实就是你网络太慢了,导致一直访问失败估计,可以按照下面的方法添加代理
vim /etc/profile
然后在文件中加入
export GOPROXY=https://goproxy.cn
如何更新go
先卸载
whereis go
然后删除所有出现的go文件
然后按如下步骤下载
- 1.下载Go发行版
从官方地址:golang.org/dl/ 上下载合适的 二进制发行版 (例如: go1.10.4.linux-amd64.tar.gz ):
wget https://dl.google.com/go/go1.18.4.linux-amd64.tar.gz
- 2.提取压缩包
提取压缩包到合适的目录(例如: /usr/local ):
sudo tar -xzf go1.18.linux-amd64.tar.gz -C /usr/local
- 3.设置路径
sudo vim /etc/profile
在配置文件中加入
export PATH=$PATH:$GOPATH/bin
export GOPATH=/home/gopath
让配置生效
source /etc/profile
可以运行如下命令,验证是否安装成功:
go version
正常输出则说明安装成功,同时可以检查版本是否安装正确。
如何从wsl1升级到wsl2
-
如何查看自己的版本
wsl -l -v如果version处是1,说明是wsl1,显示2则是wsl2
-
下载升级包
wslstorestorage.blob.core.windows.net/wslblob/wsl…
下载完成powershell
wsl -l -v找到自己要升级的版本然后仿照下面执行
wsl --set-version Ubuntu-20.04 2
为什么命令行调用kitex一直显示没有该命令
八成是没有配置path路径,导致找不到该命令,仿照下面进行修改
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOPATH=~/gopath
用kitex -module exmaple -service example echo.thrift得到的工程不全
这是我在调用sh bulid.sh生成项目的时候遇到的一部分报错信息
../../gopath/pkg/mod/github.com/cloudwego/kitex@v0.4.4/pkg/generic/thrift/base.go:63:14: not enough arguments in call to iprot.ReadStructBegin have () want (context.Context) ../../gopath/pkg/mod/github.com/cloudwego/kitex@v0.4.4/pkg/generic/thrift/base.go:68:34: not enough arguments in call to iprot.ReadFieldBegin have () want (context.Context) ../../gopath/pkg/mod/github.com/cloudwego/kitex@v0.4.4/pkg/generic/thrift/base.go:83:25: not enough arguments in call to iprot.Skip have ("github.com/apache/thrift/lib/go/thrift".TType) want (context.Context, "github.com/apache/thrift/lib/go/thrift".TType) ../../gopath/pkg/mod/github.com/cloudwego/kitex@v0.4.4/pkg/generic/thrift/base.go:93:25: not enough arguments in call to iprot.Skip have ("github.com/apache/thrift/lib/go/thrift".TType) want (context.Context, "github.com/apache/thrift/lib/go/thrift".TType) ../../gopath/pkg/mod/github.com/cloudwego/kitex@v0.4.4/pkg/generic/thrift/base.go:98:24: not enough arguments in call to iprot.Skip have ("github.com/apache/thrift/lib/go/thrift".TType) want (context.Context, "github.com/apache/thrift/lib/go/thrift".TType) ../../gopath/pkg/mod/github.com/cloudwego/kitex@v0.4.4/pkg/generic/thrift/base.go:103:12: not enough arguments in call to iprot.ReadFieldEnd have () want (context.Context)
这是我的example.thrift设置
namespace go api
struct Request {
1: string message
}
struct Response {
1: string message
}
service Echo {
Response echo(1: Request req)
}
这是我的handler.go的代码
package main
import (
"context"
api "example/kitex_gen/api"
)
// EchoImpl implements the last service interface defined in the IDL.
type EchoImpl struct{}
// Echo implements the EchoImpl interface.
func (s *EchoImpl) Echo(ctx context.Context, req *api.Request) (resp *api.Response, err error) {
// TODO: Your code here...
return &api.Response{Message: req.Message}, nil
}
这是当前的go.mod设置
module example
go 1.16
require (
github.com/apache/thrift v0.17.0
github.com/cloudwego/kitex v0.4.4
)
我运行的平台是wsl2,Linux版本是Ubuntu-20.04
解决办法,在工程下输入下面的指令go get github.com/apache/thrift@v0.13.0
怎么一次直接获取全部依赖包
用下面的指令
go mod tidy
Hertz
遇到这个错误怎么办output directory /home/cjz/workplace/hertz_demo is not under GOPATH/src. Please specify a module name with the '-module' flag
首先go.mod记得写一下,然后按照下面的的来
hz new -module hertz_demo
如果碰到配置不能用的情况,该怎么办
试一下
source /etc/profile
不管有没有更改配置文件,都可以试一下