远程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
更多关于远程Golang开发职位,每周工作2-5天的实战教程也可以访问 https://www.itying.com/category-94-b0.html
3 回复
托比亚斯,你好, 这个机会是否仍然存在?
诚挚问候, 齐亚
更多关于远程Golang开发职位,每周工作2-5天的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这是一个典型的远程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调用方面的能力,与职位描述中的技术要求高度匹配。


