我的Go+语言初体验——带你零基础学习 Go+(😄附go、go+、Python示例)

不太灵光的程序员 社区初级贡献者
优质创作者: python技术领域
领域专家: Python技术领域
2021-11-26 01:38:53

 


Go+

目录

Go+

一、前言

二、前期准备

1. 安装 Git

2. 安装 Go

3. 安装 Go Idea

4. Go执行hello world !

5. 安装 Go+

6. Go+ 执行hello world !

三、Go+的一些特性

1. 注释

2. 数据类型

3. 基础变量类型

4. 有理数

5. 容器类型

5.1. 集合

5.2. 切片

6. 常量

7. 运算符

8. 语言条件语句

9. Lambda表达式

四、运行一个简单的Grpc

1. 依赖包安装

2. 什么是go.mod?

3. 设置代理

4. 设置自动获取依赖

5. 初始化模块

6. 引用项目文件

7. grpc 客户端示例

8. grpc 服务端示例

9. 运行结果


一、前言

去年7月,七牛云首次提出Go+,填补了国人开发者在数据科学领域的空白。经过一年多时间的打磨,Go+1.0已于10月15日面世。目前,Go+1.0已经能够为工程使用,而且语言的使用门槛做了进一步的降低,更接近自然语言,1.0的门槛甚至比Python更低,使得Go+ 更适合STEM教育的场景。

宣传的这么厉害我也来学习一下,作为没有使用过Golang的我看看是不是真的好上手。

百度先查了下 go+,官网https://goplus.org/ ,GitHub项目地址 https://github.com/goplus/gop,用我蹩脚的英语翻译下,go+是一个未来可能非常火的简单易学的开发语言,可以进行工程、数据科学方面工作。

注意:go+ 完全兼容 golang 的,那学习go+的理由应该就只有 语法简单的吧。

我在学习的过程中遇到了几个问题,相信想了解Go+的大多都是没有使用过Go的,不妨也从下面的问题来学习如何使用go+,可以运行 hello, world !后再熟悉语法。

go+ 怎么安装?
go+ 依赖库怎么安装?
项目内文件怎么引用?
如何执行go+程序?

二、前期准备


go+的运行是基于go开发环境的,安装go+前 我们需要安装go的开发环境,我使用的是Windows操作系统。

1. 安装 Git


go的库管理是依赖git的,所以我们首先安装git工具。

在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开 https://git-scm.com/download/win,下载会自动开始。

2. 安装 Go


下载地址 https://golang.google.cn/dl/, 我下载的是 go 1.17 版本(go1.17.3.windows-amd64.msi)
windows下安装完成是直接添加了环境变量的,安装完成可以在命令行查看go版本:

在这里插入图片描述

在这里插入图片描述

3. 安装 Go Idea


我是下载了GoLand 2021.2.4 地址 https://www.jetbrains.com/go/download/download-thanks.html ;
IntelliJ IDEA 也有 go 和 goplus 的2020.03版的插件可以安装;
PyCharm 只有 2016-2017版的插件,新版都不支持了。

4. Go执行hello world !

go run hello.go

# hello.go

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
    fmt.Println("Hello, 不太灵光的程序员!")
}

 在这里插入图片描述

5. 安装 Go+

当前goplus最新版本为v1.0.14,go get会调用git命令从代理网址拉取代码

go get github.com/goplus/gop@v1.0.14
# 查看工作去地址
$ go env GOPATH
C:\Users\Lenovo\go
$ cd %GOPATH%\pkg\mod\github.com\goplus\gop@v1.0.14\cmd
# 编译 并将 goplus tools 移动到gobin目录,方便调用 build all Go+ tools
$ go install -v  .\...

6. Go+ 执行hello world !

gop run hello.gop

println("Hello, World!")
println("Hello, 不太灵光的程序员!")

在这里插入图片描述

三、Go+的一些特性

1. 注释

Go/Go+注释

// 单行注释
/*
多行注释
*/

    Python注释

    # 单行注释
    """
    多行注释
    """

    2. 数据类型

    • 布尔型:布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。

    • 整型:整型 int 和浮点型 float32、float64,Go +语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。

    • 字符串:字符串就是一串固定长度的字符连接起来的字符序列。

    Go+示例

    // 布尔值
    println true && false
    println true || false
    println !true
    
    // 数值
    println("1+1 =", 1+1)
    println("7.0/3.0 =", 7.0/3.0)
    
    // 字符串
    println "Go"+"Plus"

    3. 基础变量类型

    变量可以通过变量名访问。Go+ 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。

    • 指定变量类型,如果没有初始化,则变量默认为空值。
      • 数值类型(包括complex64/128)为 0
      • 布尔类型为 false
      • 字符串为 “”(空字符串)
    • 根据值自行判定变量类型。
      • 如果这个值在前面被 var 声明过的话会触发异常

    Go+示例

    // 指定变量类型,如果没有初始化,则变量默认为空值
    var phone string = "11111"
    println phone
    
    // 布尔型
    var bo bool
    // 字符型
    var by byte
    // 无符号整型
    var i int
    // 无符号整型
    var ui uint
    // 浮点型
    var f float64
    // 字符穿
    var s string
    // 格式化输出
    printf("%v %v %v %v %v %q\n", bo, by, i, ui, f, s)
    
    // 根据值自行判定变量类型
    phone1 := "11111"
    println phone1
    

    4. 有理数


    我们将有理数作为原生 Go+ 类型引入。
    我们使用后缀r来表示有理文字。例如, (1r << 200) 表示一个 big int, 其值等于 2 200。4/5r 表示有理常数 4/5。
    <<运算符,将一个运算对象的各二进制位全部左移若干位

    println 1r << 200
    println 4/5r  // 4/5
    println 4/5  // 0

    5. 容器类型

    5.1. 集合

    Go 示例

    package main
    
    import "fmt"
    
    func main() {
        // 集合
        z := map[string]string{"m1": "1"}
        // 集合插入元素
        z["name"] = "不太灵光的程序员"
        z["age"] = "18"
        fmt.Println(z["name"])
        // 集合删除元素
        delete(z, "name")
        fmt.Println(z)
    }
    

    Go+ 示例
    go+ 语法,简化使用 make 方法

    x := {"m1": 1}
    y := {"m1": 1, "m2": "go+!"}
    z := {}
    
    // 集合插入元素
    z["name"] = "不太灵光的程序员"
    z["age"] = 18
    println z["name"]
    // 集合删除元素
    delete(z, "name")
    println z
    println x, y, z
    

    Python 示例

    x = dict(m1=1)
    y = {"m1": 1, "m2": "go+!"}
    z = {}
    
    # 插入元素
    z.update({"name": "不太灵光的程序员"})
    z["age"] = 18
    # 删除元素
    z.pop("name")
    print(x, y, z)
    
    # 遍历字典
    for k in z:
        print(z[k])
    
    # 字典推导式
    print({k: v for k, v in z.items()})
    
    # 判断key是否存在
    print("name" in z)

    5.2. 切片

    Go 示例

    package main
    
    import "fmt"
    
    func main() {
        x := []int{0,1,2,3,4,5}
        // 取索引3
        fmt.Println(x[3])
        // 取索引1-4不包含4
        fmt.Println(x[1:4])
        // 取索引1到最后
        fmt.Println(x[1:])
        // 同时添加多个元素
        x = append(x, 2,3,4)
        fmt.Println(x)
    
        // 切片遍历
        for i:=0; i < len(x); i++ {
            fmt.Println(x[i])
        }
    }
    

    Go+ 示例

    x := [0, 1, 2, 3, 4] // []float64
    y := [1+2i, "xsw"] // []interface{}
    z := []
    
    println x, y, z
    
    // 取索引3
    println x[3]
    // 取索引1-4不包含4
    println x[1:4]
    // 取索引1到最后
    println x[1:]
    // 取索引0到倒数1个索引 不支持
    // 切片反转  不支持
    // 同时添加多个元素
    x = append(x, 2,3,4)
    println(x)
    

    Python 示例

    # 初始化列表
    x = [0, 1, 2, 3, 4, 5]
    # 取索引3
    print(x[3])
    # 取索引1-4不包含4
    print(x[1:4])
    # 取索引1到最后
    print(x[1:])
    # 取索引0到倒数1个索引
    print(x[:-1])
    # 切片反转
    print(x[::-1])
    # 同时添加多个元素
    x.extend([2, 3, 4])
    print(x)
    
    # 插入元素
    x.append(99)
    
    # 删除元素
    x.pop()
    x.remove(4)
    
    # 遍历字典
    for v in x:
        print(v)
    
    for i in range(len(x)):
        print(x[i])
    
    # 推导式
    print({v*v for v in x})
    
    # 判断key是否存在
    print(1 in x)

    6. 常量

    常量是一个简单值的标识符,在程序运行时,不会被修改的量。
    常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
    显式类型定义: const b string = “abc”
    隐式类型定义: const b = “abc”

    Go 示例

    package main
    import (
        "fmt"
    )
    func main() {
    	const WIDTH, LENGTH int = 5, 10
    	area := LENGTH * WIDTH
    	println area
    	// 修改常量会抛出异常  VarRef *types.Const
    	// WIDTH += 1
    }
    

    Go+ 示例

    const WIDTH, LENGTH int = 5, 10
    area := LENGTH * WIDTH
    println area
    // 修改常量会抛出异常  VarRef *types.Const
    // WIDTH += 1

    7. 运算符


    算术运算符:加+、减-、乘*、除/、求余%、自增++、自减-
    关系运算符:==、!=、>、<、>=、<=、
    逻辑运算符:%%与、||或、!非
    位运算符:%与、|或、^异或、<<左移、>>右移
    赋值运算符:赋值运算符比较多 运算法都可以直接赋值,例如 += 相加后赋值
    其他运算符:& 取地址符、* 指针变量


    8. 语言条件语句

    条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。

    Go 示例

    package main
    import (
        "fmt"
    )
    func main() {
        // if ... else
        const WIDTH, LENGTH int = 5, 10
        if WIDTH == LENGTH {
          fmt.Println("正方形")
        }else if WIDTH < LENGTH {
          fmt.Println("长方形1")
        }else{
          fmt.Println("长方形2")
        }
    
        // switch
        var grade string
        var marks int = 90
    
        switch marks {
          case 90: grade = "A"
          case 80: grade = "B"
          case 60,70 : grade = "C"
          default: grade = "D"
        }
        fmt.Println(marks, grade)
    }
    

    Go+ 示例

    // if ... else
    const WIDTH, LENGTH int = 5, 10
    if WIDTH == LENGTH {
      println "正方形"
    }else if WIDTH < LENGTH {
      println "长方形1"
    }else{
      println "长方形2"
    }
    
    // switch
    var grade string
    var marks int = 90
    
    switch marks {
      case 90: grade = "A"
      case 80: grade = "B"
      case 60,70 : grade = "C"
      default: grade = "D"
    }
    println marks, grade
    

    Python 示例

    # if ... else
    WIDTH, LENGTH = 5, 10
    if WIDTH == LENGTH:
        print("正方形")
    elif WIDTH < LENGTH:
        print("长方形1")
    else:
        print("长方形2") 

    9. Lambda表达式

    Go语言中的匿名函数 指的是不需要有名字的函数,通常定义在另外一个函数内部

    Go 示例

    package main
    import (
        "fmt"
    )
    func main() {
        Sum := func(x, l int) (int) { return x + x }
        // 变量Sum作为匿名函数来使用,求和
        fmt.Println(Sum(50,10))
        return
    }
    

    Go+ 示例

    // 并没看懂怎么用  触发异常了 undefined: Sum
    Sum x, y => x + y
    println(Sum(50,10))

    Python 示例

    Sum = lambda x, y: x + y
    print(Sum(10, 2))

    四、运行一个简单的Grpc


    前面我们成功的安装了Go+运行环境,下面我们通过运行一个简单的Grpc来了解下如何进行包的引用。

    1. 依赖包安装


    对于依赖库的引用 Go+ 已经做了很多优化让代码写起来更简单,就像前面执行打印时Go需要import "fmt"才可以调用,Go+可以直接调用println函数。但是除了基础外在日常开发中还是需要用到很多外部依赖库,还更便捷的进行开发工作,下面来了解下Go包管理工具go.mod。

    2. 什么是go.mod?


    Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。

    Go.mod其实就是一个Modules,关于Modules的官方定义为:

    Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。Modules替换旧的基于GOPATH的方法,来指定使用哪些源文件。

    Modules和传统的GOPATH不同,不需要包含例如src,bin这样的子目录,一个源代码目录甚至是空目录都可以作为Modules,只要其中包含有go.mod文件。

    3. 设置代理


    执行go get 或 go install 安装依赖时可能会出现地址无法访问的情况,可以设置代理地址,在win10任务栏左下角的win标志右键,以管理员身份打开powershell

    $env:GOPROXY = "https://goproxy.io"
    
    ## 如果还是无法访问,还需要设置下外网的代理
    
    set http_proxy=127.0.0.1:19180
    set https_proxy=127.0.0.1:19180

    4. 设置自动获取依赖


    go env -w GO111MODULE=auto

    • GO111MODULE有三个值:off, on和auto(默认值)。
    • GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
    • GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
    • GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
    • 当前目录在GOPATH/src之外且该目录包含go.mod文件当前文件在包含go.mod文件的目录下面。

    5. 初始化模块


    测试项目目录结构如下图所示:

    在这里插入图片描述

    在根目录执行go mod {包名称} 命令后会生成一个go.mod文件,后面这个文件会记录项目使用的包和包版本,有点像Python中的requirements.txt文件。

    go.mod 文件

    module hello
    
    go 1.17

    注意:子目录里是不需要init的,所有的子目录里的依赖都会组织在根目录的go.mod文件里

    执行 go run server.go 运行代码会发现 go mod 会自动查找依赖自动下载

    go.mod 文件

    module hello
    
    go 1.17
    
    require (
    	github.com/golang/protobuf v1.5.2 // indirect
    	github.com/goplus/gop v1.0.14 // indirect
    	golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9 // indirect
    	golang.org/x/sys v0.0.0-20211124211545-fe61309f8881 // indirect
    	golang.org/x/text v0.3.7 // indirect
    	google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1 // indirect
    	google.golang.org/grpc v1.42.0 // indirect
    	google.golang.org/protobuf v1.27.1 // indirect
    )

    6. 引用项目文件

    helloworld.proto文件

    syntax = "proto3";
    
    package hello;
    
    option go_package = "/protos";
    
    // 定义一个服务
    service Greeter {
      // 定义一个函数
      rpc SayHello (HelloRequest) returns (HelloReply) {}
    }
    
    // 定义函数的输入
    message HelloRequest {
      string name = 1;
    }
    
    // 定义函数的输出
    message HelloReply {
      string message = 1;
    }
    

    在protos目录下是我们生成的grpc协议文件,了解proto 。首先我们需要编辑一个标准的proto协议文件,然后执行下面的编译命令生成go的协议文件。

    protoc -I=$SRC_DIR --go_out=$DST_DIR $SRC_DIR/helloworld.proto
    
    # 我们的示例
    protoc.exe --go_out=plugins=grpc:. helloworld.proto

    在这里插入图片描述

    生成的helloworld.pb.go文件是grpc客户端和grpc服务端都需要引用的文件,用来指定一个标准的通信规则,怎么来引用这个文件呢?我们在前面初始化了我们当前项目的模块名称是 hello,所以我们在import中添加"hello/protos"来引用该文件。

    7. grpc 客户端示例

    client.go文件

    package main
    
    import (
        "log"
        "os"
    
        "golang.org/x/net/context"
        "google.golang.org/grpc"
    
        pb "hello/protos"
    )
    
    const (
        address     = "localhost:8888"
        defaultName = "不太灵光的程序员"
    )
    
    func main() {
        // Set up a connection to the server.
        conn, err := grpc.Dial(address, grpc.WithInsecure())
        if err != nil {
            log.Fatalf("did not connect: %v", err)
        }
        defer conn.Close()
        c := pb.NewGreeterClient(conn)
    
        // Contact the server and print out its response.
        name := defaultName
        if len(os.Args) > 1 {
            name = os.Args[1]
        }
        r, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name})
        if err != nil {
            log.Fatalf("could not greet: %v", err)
        }
        log.Printf("Greeting: %s", r.Message)
    }
    

    8. grpc 服务端示例

    server.go文件

    package main
    
    import (
        "log"
        "net"
    
        "golang.org/x/net/context"
        "google.golang.org/grpc"
        "google.golang.org/grpc/reflection"
    
        pb "hello/protos"
    )
    
    const (
        port = ":8888"
    )
    
    // GreeterServerImplementation is used to implement helloworld.GreeterServer.
    type GreeterServerImplementation struct{}
    
    // SayHello implements helloworld.GreeterServer
    func (s *GreeterServerImplementation) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
        return &pb.HelloReply{Message: "Hello " + in.Name}, nil
    }
    
    func main() {
        lis, err := net.Listen("tcp", port)
        if err != nil {
            log.Fatalf("failed to listen: %v", err)
        }
        s := grpc.NewServer()
        pb.RegisterGreeterServer(s, &GreeterServerImplementation{})
        // Register reflection service on gRPC server.
        reflection.Register(s)
        if err := s.Serve(lis); err != nil {
            log.Fatalf("failed to serve: %v", err)
        }
    }
    

    9. 运行结果

    # 运行grpc服务端
    go run server.go
    # 运行grpc客户端
    go run client.go

    在这里插入图片描述

    代码转换后 无法直接运行  Go+ 的grpc服务,😥

    未完待续 ...

    后面我会尝试使用Go+编写 Grpc服务,希望可以也正常运行!

    原文链接:https://pycoder.blog.csdn.net/article/details/121550834

    原文链接:https://pycoder.blog.csdn.net/article/details/121604120

    ...全文
    4791 17 打赏 收藏 转发到动态 举报
    写回复
    用AI写文章
    17 条回复
    切换为时间正序
    请发表友善的回复…
    发表回复
    nuaawuxiaozhen 2021-12-06
    • 打赏
    • 举报
    回复 1
    👍
    weixin_44683668 2021-12-06
    • 打赏
    • 举报
    回复 2
    简洁明了,易入门,学到了学到了
    • 打赏
    • 举报
    回复 1
    很赞
    冰菓384 2021-12-02
    • 打赏
    • 举报
    回复 1
    厉害👍值得学习!
    weixin_64777077 2021-12-02
    • 打赏
    • 举报
    回复 1
    值得学习!
    九龙塘小玫瑰 2021-12-02
    • 打赏
    • 举报
    回复 1
    我已经学会了
    . Salut 2021-12-01
    • 打赏
    • 举报
    回复 1
    感谢分享!学到了!!!
    Tasia857 2021-12-01
    • 打赏
    • 举报
    回复 1
    厉害👍🏻
    王微微647 2021-12-01
    • 打赏
    • 举报
    回复 1
    哇塞 太厉害了 连我这种新学的小白都能看懂 深入浅出 真是太棒了!!!
    kunkun0205 2021-12-01
    • 打赏
    • 举报
    回复 1
    谢谢博主,希望能看到更多面向小白的文章!
    我爱小海鸥 2021-12-01
    • 打赏
    • 举报
    回复 1
    值得学习
    大杯冰美式i 2021-12-01
    • 打赏
    • 举报
    回复 1
    看完直接如同醍醐灌顶,茅塞顿开么。
    苗579 2021-12-01
    • 打赏
    • 举报
    回复 1
    写的太棒了~感谢分享,受益匪浅,支持支持,点赞点赞
    杨东杰 2021-11-26
    • 打赏
    • 举报
    回复 1

    标题很犀利,内容却非常一般啊,是没有写完吗?

    叶庭云 社区初级贡献者 2021-11-27
    • 举报
    回复 1
    @杨东杰 +1
    不太灵光的程序员 社区初级贡献者 2021-11-28
    • 举报
    回复 1
    @杨东杰 就是能力所限啊
    Go+ 2021-11-26
    • 打赏
    • 举报
    回复 1

    等待后续上手文章。另外请注意下文章的标题请注意按照 “我的Go+语言初体验——自拟标题 ”的格式修改哦,

    修改方式:点击进入帖子详情——点击 “···”——选择编辑,即可对帖子进行修改了~

    源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 SSD1306是一种常用于微控制器的OLED(有机发光二极管)显示驱动集成电路。该集成电路被设计用来驱动单色或双色的图形显示,通常被应用在小型电子设备的显示屏上,包括诸如智能手表、家庭智能设备以及嵌入式系统等设备。接下来,我们将详细分析SSD1306的核心特性、运作机制以及在实际项目中的具体应用方法。 1. SSD1306简介: SSD1306是一款具备低能耗、高效率的OLED驱动管理芯片,支持I2C和SPI通信方式,能够驱动64x48像素的OLED显示屏。它集成了电压变换装置,可以直接使用3.3V或5V的电源供电,从而优化了电源管理设计。 2. SSD1306硬件特征: - 内置电荷泵:为OLED单元提供超出VCC的电压,确保屏幕的明亮度。 - 存储器映射:64行x48列的显示存储空间,用于保存显示数据。 - 数据串行处理:内部电路将并行数据转换为串行数据,以驱动OLED单元。 - 多种接口支持:兼容I2C(双线接口)和SPI(四线串行接口),便于与微控制器相连。 - 显示管理:具备垂直滚动控制、开关功能、对比度调节等操作。 3. SSD1306运作机制: OLED屏幕由众多自发光的像素点组成,每个像素点由红、绿、蓝三色OLED单元构成。SSD1306通过控制每个像素点的电流大小来调节亮度,从而实现图像的展示。通过I2C或SPI接口,微控制器向SSD1306传输指令和数据,用以设定显示内容及其参数。 4. SSD1306应用步骤: a. 连接线路:将微控制器的I2C或SPI引脚与SSD1306对应的引脚相连接。 b. 初始化设置:发送初始化指令序列,设定屏幕分辨率、通信接口...
    内容概要:本文档标题虽为《基于蚁群优化算法的直流电机模糊PID控制(Matlab实现)》,但实际内容是一篇关于“SEM广告投放策略优化”的完整研究论文。该论文基于某互联网公司2025年全年约142万元的SEM投放数据,构建了“诊断—分类—优化—鲁棒决策”四层次量化分析框架。首先从广告设计、关键词管理、出价预算与投放时间四个维度评估投放合理性,并建立对数线性假日效应回归模型,揭示工作日效益高、节假日效应显著等时间规律;其次提出成本—效益二维归一化分类框架,结合中位数分割与K-means聚类校验,将6000余个关键词划分为黄金词、重点词、潜力词、问题词和无效词五类;接着建立以预期注册量最大化为目标、受日预算与总预算双重约束的0-1整数规划模型,采用贪心选词与拉格朗日对偶定价相结合的两阶段算法求解,得出2025年特定周期的最优投放策略;最后引入CVaR鲁棒优化框架,应对竞价、展现、点击与转化的多重不确定性,给出2026年特定周期的稳健投放方案及指标期望范围。实证结果显示,优化后单位注册成本下降约20%,黄金词预算占比提升至四成以上,无效词被完全剔除,整体投放结构显著改善。; 适合人群:具备数据分析、运筹优化或数字营销背景,从事互联网广告投放、商业分析、数据科学等相关工作的从业者及高校研究生。; 使用场景及目标:① 学习如何系统性地诊断与优化大规模SEM广告投放策略;② 掌握关键词分类、预算分配、鲁棒优化等核心建模方法;③ 为实际业务中提升广告投放ROI(投资回报率)提供可复用的量化分析框架与算法参考。; 阅读建议:本文兼具理论深度与实践价值,建议读者结合文中提到的三张数据表单(投放记录、注册数、关键词统计)和结果模板,复现其分析流程与模型推导,重点关注分类规则的设计、两阶段算法的实现细节以及CVaR鲁棒框架的应用逻辑,以便将方法迁移到自身的业务场景中。

    1,097

    社区成员

    发帖
    与我相关
    我的任务
    社区描述
    Go+ 官方开发者社区。我们希望向广大的开发者和数据科学家介绍 Go+ 的定位和意义,并邀请更多开发者一起贡献代码、共建 Go+ 生态。 Go+ 官网:https://goplus.org/
    其他 企业社区
    社区管理员
    • Go+
    • 杨东杰
    加入社区
    • 近7日
    • 近30日
    • 至今
    社区公告

    本社区为 Go+ 官方开发者社区。我们希望向广大的开发者和数据科学家介绍 Go+ 的定位和意义,并邀请更多开发者一起贡献代码、共建 Go+ 生态。

    Go+ 官网:https://goplus.org/
    GitHub地址:https://github.com/goplus/gop

    试试用AI创作助手写篇文章吧