在Debian上集成Golang與其他技術,可以按照以下步驟進行:
首先,確保你的Debian系統是最新的:
sudo apt update && sudo apt upgrade -y
然后,安裝Golang:
sudo apt install golang-go -y
驗證安裝:
go version
編輯你的~/.bashrc或~/.profile文件,添加以下行:
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin
使更改生效:
source ~/.bashrc # 或 source ~/.profile
安裝Gin:
go get -u github.com/gin-gonic/gin
創建一個簡單的Gin應用:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "hello world",
})
})
r.Run() // 默認監聽并在 0.0.0.0:8080 上啟動服務
}
運行應用:
go run main.go
安裝Beego:
go get -u github.com/beego/beego/v2
go get -u github.com/beego/bee/v2
創建一個簡單的Beego應用:
package main
import (
_ "yourapp/routers"
"github.com/beego/beego/v2/server/web"
)
func main() {
web.Run()
}
創建路由文件routers/router.go:
package routers
import (
"yourapp/controllers"
"github.com/beego/beego/v2/server/web"
)
func init() {
web.Router("/", &controllers.MainController{})
}
創建控制器文件controllers/main.go:
package controllers
import (
"github.com/beego/beego/v2/server/web"
)
type MainController struct {
web.Controller
}
func (c *MainController) Get() {
c.Data["json"] = map[string]string{"message": "hello world"}
c.ServeJSON()
}
運行應用:
bee run
安裝PostgreSQL客戶端庫:
go get -u github.com/lib/pq
創建一個簡單的數據庫連接示例:
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
func main() {
connStr := "user=youruser dbname=yourdb password=yourpassword sslmode=disable"
db, err := sql.Open("postgres", connStr)
if err != nil {
panic(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Successfully connected to the database!")
}
安裝MySQL客戶端庫:
go get -u github.com/go-sql-driver/mysql
創建一個簡單的數據庫連接示例:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
dsn := "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := sql.Open("mysql", dsn)
if err != nil {
panic(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Successfully connected to the database!")
}
安裝RabbitMQ客戶端庫:
go get -u github.com/streadway/amqp
創建一個簡單的RabbitMQ生產者示例:
package main
import (
"log"
"github.com/streadway/amqp"
)
func failOnError(err error) {
if err != nil {
log.Fatalf("Failed to connect to RabbitMQ: %v", err)
}
}
func main() {
conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
failOnError(err)
defer conn.Close()
ch, err := conn.Channel()
failOnError(err)
defer ch.Close()
q, err := ch.QueueDeclare(
"hello", // name
false, // durable
false, // delete when unused
false, // exclusive
false, // no-wait
nil, // arguments
)
failOnError(err)
body := "Hello World!"
err = ch.Publish(
"", // exchange
q.Name, // routing key
false, // mandatory
false, // immediate
amqp.Publishing{
ContentType: "text/plain",
Body: []byte(body),
})
failOnError(err)
fmt.Println(" [x] Sent 'Hello World!'")
}
創建一個簡單的RabbitMQ消費者示例:
package main
import (
"log"
"github.com/streadway/amqp"
)
func failOnError(err error) {
if err != nil {
log.Fatalf("Failed to connect to RabbitMQ: %v", err)
}
}
func main() {
conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
failOnError(err)
defer conn.Close()
ch, err := conn.Channel()
failOnError(err)
defer ch.Close()
q, err := ch.QueueDeclare(
"hello", // name
false, // durable
false, // delete when unused
false, // exclusive
false, // no-wait
nil, // arguments
)
failOnError(err)
msgs, err := ch.Consume(
q.Name, // queue
"", // consumer
true, // auto-ack
false, // exclusive
false, // no-local
false, // no-wait
nil, // args
)
failOnError(err)
forever := make(chan bool)
go func() {
for d := range msgs {
log.Printf("Received a message: %s", d.Body)
}
}()
log.Printf(" [*] Waiting for messages. To exit press CTRL+C")
<-forever
}
通過以上步驟,你可以在Debian上集成Golang與其他技術,如Web框架、數據庫和消息隊列。根據具體需求選擇合適的技術進行集成。