远程Golang开发职位,每周工作2-5天

远程Golang开发职位,每周工作2-5天 关于我们 SpeedAdvertiser 开发搜索引擎广告软件。

任务

  • 为 SaaS 开发后端和数据库
  • 为 Angular 用户界面创建 API
  • 编辑 AdWords 产品信息流
  • 无遗留代码:您将开发全新产品!

要求

  • 至少 2 年 Golang 经验
  • 会说英语或德语
  • 熟悉数据库概念
  • 曾用 Golang 开发过 API
  • 热爱编写清晰、高性能的代码
  • 有 AdWords API 经验者优先

SpeedAdvertiser 提供

  • 2-5 天远程工作,与精干小团队合作
  • 不提供签证支持
  • 有机会成为团队负责人

申请方式 请将简历、推荐信和薪资要求发送至: tobias.duering@speedadvertiser.com

欢迎来电咨询: +49 (0)177 770 4422

SpeedAdvertiser 职位描述


更多关于远程Golang开发职位,每周工作2-5天的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

托比亚斯,你好, 这个机会是否仍然存在?

诚挚问候, 齐亚

更多关于远程Golang开发职位,每周工作2-5天的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你好 Tobias,

希望你一切顺利!

我已经给你发送了一封包含所有详细信息的邮件,请查收。

此致
Troy W.

这是一个典型的远程Golang开发职位机会,专注于搜索引擎广告软件的SaaS后端开发。基于职位描述的技术要求,以下是一些相关的Golang技术实现示例:

Golang API开发示例(RESTful API):

package main

import (
    "encoding/json"
    "log"
    "net/http"
    "github.com/gorilla/mux"
)

type AdCampaign struct {
    ID      string  `json:"id"`
    Name    string  `json:"name"`
    Budget  float64 `json:"budget"`
    Status  string  `json:"status"`
}

var campaigns []AdCampaign

func main() {
    router := mux.NewRouter()
    
    router.HandleFunc("/api/campaigns", getCampaigns).Methods("GET")
    router.HandleFunc("/api/campaigns", createCampaign).Methods("POST")
    router.HandleFunc("/api/campaigns/{id}", getCampaign).Methods("GET")
    
    log.Println("Server starting on :8080")
    log.Fatal(http.ListenAndServe(":8080", router))
}

func getCampaigns(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(campaigns)
}

func createCampaign(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    var campaign AdCampaign
    json.NewDecoder(r.Body).Decode(&campaign)
    campaigns = append(campaigns, campaign)
    json.NewEncoder(w).Encode(campaign)
}

func getCampaign(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    params := mux.Vars(r)
    for _, item := range campaigns {
        if item.ID == params["id"] {
            json.NewEncoder(w).Encode(item)
            return
        }
    }
    json.NewEncoder(w).Encode(&AdCampaign{})
}

数据库集成示例(使用GORM):

package main

import (
    "gorm.io/driver/postgres"
    "gorm.io/gorm"
)

type ProductFeed struct {
    gorm.Model
    CampaignID  uint   `json:"campaign_id"`
    ProductID   string `json:"product_id"`
    Title       string `json:"title"`
    Description string `json:"description"`
    Price       float64 `json:"price"`
}

func main() {
    dsn := "host=localhost user=gorm password=gorm dbname=gorm port=9920 sslmode=disable"
    db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
    if err != nil {
        panic("failed to connect database")
    }

    db.AutoMigrate(&ProductFeed{})
    
    // 创建产品信息流记录
    feed := ProductFeed{
        CampaignID:  1,
        ProductID:   "prod_123",
        Title:       "Example Product",
        Description: "Product description for AdWords",
        Price:       29.99,
    }
    db.Create(&feed)
}

AdWords API集成示例:

package main

import (
    "context"
    "fmt"
    "golang.org/x/oauth2"
    "google.golang.org/api/adwords/v201809"
    "google.golang.org/api/option"
)

type AdWordsClient struct {
    service *adwords.Service
}

func NewAdWordsClient(token *oauth2.Token) (*AdWordsClient, error) {
    ctx := context.Background()
    config := &oauth2.Config{
        ClientID:     "your-client-id",
        ClientSecret: "your-client-secret",
        Endpoint: oauth2.Endpoint{
            AuthURL:  "https://accounts.google.com/o/oauth2/auth",
            TokenURL: "https://accounts.google.com/o/oauth2/token",
        },
    }
    
    client := config.Client(ctx, token)
    service, err := adwords.NewService(ctx, option.WithHTTPClient(client))
    if err != nil {
        return nil, err
    }
    
    return &AdWordsClient{service: service}, nil
}

func (c *AdWordsClient) GetCampaigns() ([]*adwords.Campaign, error) {
    campaigns, err := c.service.Campaigns.List().Do()
    if err != nil {
        return nil, err
    }
    return campaigns, nil
}

这些示例展示了Golang在构建高性能API、数据库集成和第三方API调用方面的能力,与职位描述中的技术要求高度匹配。

回到顶部