protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative hello.proto
### 服务端
func main() {
http.HandleFunc("/add", func(w http.ResponseWriter, r *http.Request) {
err := r.ParseForm()
if err != nil {
log.Printf("解析参数错误:%s", err)
}
fmt.Println("path", r.URL.Path)
a, _ := strconv.Atoi(r.Form["a"][0])
b, _ := strconv.Atoi(r.Form["b"][0])
w.Header().Set("Content-Type", "application/json")
jData, _ := json.Marshal(map[string]int{
"data": a + b,
})
w.Write(jData)
})
http.ListenAndServe(":8080", nil)
}
type ResponseData struct {
Data int `json:"data"`
}
func Add(a, b int) int {
req := HttpRequest.NewRequest()
res, _ := req.Get(fmt.Sprintf("http://127.0.0.1:8080/add?a=%v&b=%v", a, b))
body, _ := res.Body()
rspData := ResponseData{}
_ = json.Unmarshal(body, &rspData)
fmt.Println(string(body))
return rspData.Data
}
func main() {
rsp := Add(1, 2)
fmt.Println(rsp)
//http.NewRequest()
}
type HelloService struct{}
func (s *HelloService) Hello(request string, reply *string) error {
*reply = "hello" + request
return nil
}
func main() {
//1 实例化一个server
listen, _ := net.Listen("tcp", "localhost:8084")
//2 注册处理逻辑handler
_ = rpc.RegisterName("HelloService", &HelloService{})
// 启动服务
conn, _ := listen.Accept()
rpc.ServeConn(conn)
}
func main() {
client, err := rpc.Dial("tcp", "localhost:8084")
if err != nil {
log.Printf("链接失败%s", err)
}
var reply string
err = client.Call("HelloService.Hello", "bobby", &reply)
if err != nil {
panic("调用失败")
}
fmt.Println(reply)
}
type HelloService struct {
}
func (s *HelloService) Hello(request string, reply *string) error {
*reply = "hello" + request
return nil
}
func main() {
listener, _ := net.Listen("tcp", ":8080")
_ = rpc.RegisterName("HelloService", &HelloService{})
for {
conn, _ := listener.Accept()
go rpc.ServeCodec(jsonrpc.NewServerCodec(conn))
}
}
func main() {
conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
panic("连接失败")
}
var reply string
client := rpc.NewClientWithCodec(jsonrpc.NewClientCodec(conn))
err = client.Call("HelloService.Hello", "bobby", &reply)
if err != nil {
panic("调用失败")
}
fmt.Println(reply)
}
syntax = "proto3";
option go_package = ".;proto";
service Greeter {
rpc SayHello(HelloRequest) returns(HelloReply){}
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
type Server struct {
pb.UnimplementedGreeterServer
}
func (s *Server) mustEmbedUnimplementedGreeterServer() {
//TODO implement me
fmt.Println("hello")
}
// SayHello rpc调用
func (s *Server) SayHello(ctx context.Context, request *pb.HelloRequest) (*pb.HelloReply, error) {
return &pb.HelloReply{Message: "hello " + request.GetName()}, nil
}
func main() {
g := grpc.NewServer()
pb.RegisterGreeterServer(g, &Server{})
listen, err := net.Listen("tcp", ":8084")
if err != nil {
panic(err)
}
err = g.Serve(listen)
if err != nil {
panic(err)
}
}
func main() {
conn, err := grpc.Dial("localhost:8084", grpc.WithInsecure())
if err != nil {
panic(err)
}
defer conn.Close()
c := proto.NewGreeterClient(conn)
r, err1 := c.SayHello(context.Background(), &proto.HelloRequest{Name: "bobby"})
if err1 != nil {
fmt.Println("err", err1.Error())
}
fmt.Println(r.Message)
}
syntax = "proto3";
import "base.proto";
import "google/protobuf/empty.proto";
option go_package=".;proto";
service Greeter {
rpc SayHello(HelloRequest) returns(HelloReply);
rpc Ping(google.protobuf.Empty) returns(Pong);
}
message HelloRequest {
string url = 1;
string name = 2;
}
message HelloReply {
string message = 1;
}
enum Gender {
MALE = 0;
FEMALE = 1;
}
message HelloRequest {
string url = 1;
string name = 2;
Gender gender = 3;
}
func main() {
conn, err := grpc.Dial("localhost:8082", grpc.WithInsecure())
if err != nil {
panic(err)
}
defer conn.Close()
client := proto.NewGreeterClient(conn)
rsp, _ := client.SayHello(context.Background(), &proto.HelloRequest{
Name: "刘德华",
Url: "http://www.xiaozhi.shop",
Gender: proto.Gender_FEMALE,
})
fmt.Println(rsp.Message)
}
message HelloRequest {
string url = 1; //网站
string name = 2; // 姓名
Gender gender = 3; // 姓别
map<string,string> mp = 4;
}
func main() {
conn, err := grpc.Dial("localhost:8082", grpc.WithInsecure())
if err != nil {
panic(err)
}
defer conn.Close()
client := proto.NewGreeterClient(conn)
rsp, _ := client.SayHello(context.Background(), &proto.HelloRequest{
Name: "刘德华",
Url: "http://www.xiaozhi.shop",
Gender: proto.Gender_FEMALE,
Mp: map[string]string{
"name": "周华建",
"age": "222",
},
})
fmt.Println(rsp.Message)
}
message HelloRequest {
string url = 1; //网站
string name = 2; // 姓名
Gender gender = 3; // 姓别
map<string,string> mp = 4;
google.protobuf.Timestamp createTime = 5;
}
func main() {
conn, err := grpc.Dial("localhost:8082", grpc.WithInsecure())
if err != nil {
panic(err)
}
defer conn.Close()
client := proto.NewGreeterClient(conn)
rsp, _ := client.SayHello(context.Background(), &proto.HelloRequest{
Name: "刘德华",
Url: "http://www.xiaozhi.shop",
Gender: proto.Gender_FEMALE,
Mp: map[string]string{
"name": "周华建",
"age": "222",
},
CreateTime: timestamppb.New(time.Now()),
})
fmt.Println(rsp.Message)
}
type Server struct {
pb.UnimplementedGreeterServer
}
func (s *Server) SayHello(ctx context.Context, request *pb.HelloRequest) (*pb.HelloReply, error) {
return &pb.HelloReply{Message: "hello " + request.GetName()}, nil
}
func main() {
interceptor := func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (rsp interface{}, err error) {
fmt.Println("接收到一个新的请求")
return nil, nil
i, err := handler(ctx, req)
return i, err
}
opt := grpc.UnaryInterceptor(interceptor)
g := grpc.NewServer(opt)
pb.RegisterGreeterServer(g, &Server{})
listen, err := net.Listen("tcp", ":8084")
if err != nil {
panic(err)
}
err = g.Serve(listen)
if err != nil {
panic(err)
}
}
func main() {
interceptor := func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoke grpc.UnaryInvoker, opts ...grpc.CallOption) error {
start := time.Now()
err := invoke(ctx, method, req, reply, cc, opts...)
fmt.Printf("用时:%s", time.Since(start))
return err
}
opt := grpc.WithUnaryInterceptor(interceptor)
conn, err := grpc.Dial("localhost:8084", grpc.WithInsecure(), opt)
if err != nil {
panic(err)
}
defer conn.Close()
c := proto.NewGreeterClient(conn)
r, err1 := c.SayHello(context.Background(), &proto.HelloRequest{Name: "刘德华"})
if err1 != nil {
panic(err)
}
fmt.Println(r.Message)
}
type Server struct {
pb.UnimplementedGreeterServer
}
func (s *Server) SayHello(ctx context.Context, request *pb.HelloRequest) (*pb.HelloReply, error) {
return &pb.HelloReply{Message: "hello " + request.GetName()}, nil
}
func main() {
interceptor := func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (rsp interface{}, err error) {
md, ok := metadata.FromIncomingContext(ctx)
if !ok {
return rsp, status.Error(codes.Unauthenticated, "无token认证信息")
}
var appId string
var appKey string
if val, ok := md["appId"]; ok {
appId = val[0]
}
if val, ok := md["appKey"]; ok {
appKey = val[0]
}
fmt.Println(appId, appKey)
if appId != "101010" || appKey != "i am key" {
return rsp, status.Error(codes.Unauthenticated, "无token认证信息")
}
//fmt.Println("接收到一个请求")
i, err := handler(ctx, req)
return i, err
}
opt := grpc.UnaryInterceptor(interceptor)
g := grpc.NewServer(opt)
pb.RegisterGreeterServer(g, &Server{})
listen, err := net.Listen("tcp", ":8084")
if err != nil {
panic(err)
}
err = g.Serve(listen)
if err != nil {
panic(err)
}
}
func main() {
interceptor := func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoke grpc.UnaryInvoker, opts ...grpc.CallOption) error {
start := time.Now()
md := metadata.New(map[string]string{
"appId": "101010",
"appKey": "i am key",
})
ctx = metadata.NewOutgoingContext(context.Background(), md)
err := invoke(ctx, method, req, reply, cc, opts...)
fmt.Printf("用时:%s", time.Since(start))
return err
}
var opts []grpc.DialOption
opts = append(opts, grpc.WithInsecure())
opts = append(opts, grpc.WithUnaryInterceptor(interceptor))
//opt := grpc.WithUnaryInterceptor(interceptor)
conn, err := grpc.Dial("localhost:8084", opts...)
if err != nil {
panic(err)
}
defer conn.Close()
c := proto.NewGreeterClient(conn)
r, err1 := c.SayHello(context.Background(), &proto.HelloRequest{Name: "刘德华"})
if err1 != nil {
panic(err1)
}
fmt.Println(r.Message)
}
func main() {
var users []model.User
for i := 0; i < 100; i++ {
users = append(users, model.User{Username: fmt.Sprintf("刘德华%d", i), Age: i})
}
tx := driver.DB.Model(&model.User{}).CreateInBatches(&users, 100)
fmt.Println(tx.RowsAffected)
}
func main() {
var user model.User
tx := driver.DB.Model(&user).Where("username = ?", "刘德华20").Find(&user)
if tx.Error != nil {
log.Fatalf("获取失败%s", tx.Error)
}
fmt.Println(user)
}
func main() {
var user model.User
driver.DB.Where(&model.User{Username: "刘德华0"}).Find(&user)
user.Username = "周华建"
err := driver.DB.Save(&user).Error
if err != nil {
log.Fatalf("更新失败%s", err)
}
fmt.Println("更新成功")
}
err := driver.DB.Where("id = ?", 205).Updates(&model.User{Username: "哈哈", Age: 44}).Error
if err != nil {
log.Printf("更新失败%s", err)
}
fmt.Println("更新成功")
func main() {
err := driver.DB.Where("id = ?", 206).Unscoped().Delete(&model.User{}).Error
if err != nil {
log.Printf("删除失败%s", err)
}
fmt.Println("删除成功")
}
func main() {
company := model.Company{
Name: "晓智科技",
}
user := model.User{
Username: "晓智",
Company: company,
}
err := driver.DB.Create(&user).Error
if err != nil {
log.Printf("插入失败%s", err)
}
fmt.Println("插入成功")
}
func main() {
user := model.User{
Company: model.Company{},
}
err := driver.DB.Preload("Company").Find(&user).Error
if err != nil {
log.Printf("查询失败%s", err)
}
fmt.Println(user.Company.Name)
}
func main() {
var languages []model.Language
languages = append(languages, model.Language{Name: "GO"})
languages = append(languages, model.Language{Name: "java"})
user := model.User{
Languages: languages,
}
err := driver.DB.Create(&user).Error
if err != nil {
log.Printf("创建失败%s", err.Error())
}
fmt.Println("创建成功")
}
func main() {
host := "http://localhost:9200"
logger := log.New(os.Stdout, "xiaozhi", log.LstdFlags)
client, err := elastic.NewClient(elastic.SetURL(host), elastic.SetSniff(false), elastic.SetTraceLog(logger))
if err != nil {
panic(err)
}
q := elastic.NewMatchQuery("address", "street")
do, err := client.Search().Index("user").Query(q).Do(context.Background())
if err != nil {
panic(err)
}
for _, value := range do.Hits.Hits {
var user User
err := json.Unmarshal(value.Source, &user)
if err != nil {
panic(err)
}
fmt.Println(user)
}
user := User{Name: "张德地", Age: 30}
put, err := client.Index().Index("user").Id("3").BodyJson(&user).Do(context.Background())
if err != nil {
panic(err)
}
fmt.Println(put)
}
func main() {
var course = make(map[string]string, 2)
course["name"] = "周华建"
fmt.Println(course["name"])
}
type Course struct {
Name string `json:"name"`
Desc string `json:"desc"`
}
func (c *Course) String() string {
return c.Name + c.Desc
}
func main() {
c := &Course{}
fmt.Println(c.String())
}
func main() {
var out []*int
for i := 0; i < 3; i++ {
tmp := i
out = append(out, &tmp)
}
for _, value := range out {
fmt.Println(*value)
}
}
func Add[T int | int32 | float64 | string](a, b T) T {
return a + b
}
func main() {
print(Add("hello", "world"))
}
type User[T int | bool] struct {
Name string `json:"name"`
Age T `json:"age"`
}
func main() {
user := User[bool]{
Name: "刘德华",
Age: false,
}
fmt.Println(user)
}
var command = &cobra.Command{
Use: "api",
Short: "a brief description of your application",
Long: "a longer description",
}
var mockCommand = &cobra.Command{
Use: "mock",
Short: "批量发送数据",
Long: "",
RunE: func(cmd *cobra.Command, args []string) error {
fmt.Println("call mock")
return nil
},
}
func main() {
command.AddCommand(mockCommand)
err := command.Execute()
if err != nil {
panic(err)
}
}
func main() {
host := "http://localhost:9200"
logger := log.New(os.Stdout, "elastic", log.LstdFlags)
client, err := elastic.NewClient(elastic.SetURL(host), elastic.SetSniff(false), elastic.SetTraceLog(logger))
if err != nil {
panic(err)
}
user := &User{Name: "tom", Sex: "1", Tel: "15992478448"}
do, err1 := client.Index().Index("user").Type("_create").Id("1002").BodyJson(user).Do(context.Background())
if err1 != nil {
panic(err1)
}
fmt.Println(do)
}