thảo luận Tất tần tật về Go (Golang)

Mọi người cho mình hỏi mình muốn insert vào 2 bảng có relation với nhau. Hiện tại mình đang dùng PostgreSQL và pgx là driver. Thì mình sẽ insert như thế nào nhỉ ?
Cách làm hiện tại của mình là mở 1 transaction và insert lần lượt nếu error thì rollback.
 
fiber dùng fasthttp mà không phát triển trên net/http nên em thấy cái nào đề xuất fiber cũng bị downvote.
Nên dùng Echo, build trên net/http nên đảm bảo hỗ trợ lâu dài. Gin cũng dc nhưng mà không ngon bằng Echo.
Còn mấy cái mà build trên fasthttp thì tùy ý kiến, mình ko thích lắm vì mấy cái không phải std thì dễ bị bỏ rơi giữa chừng.
 
Mọi người cho mình hỏi mình muốn insert vào 2 bảng có relation với nhau. Hiện tại mình đang dùng PostgreSQL và pgx là driver. Thì mình sẽ insert như thế nào nhỉ ?
Cách làm hiện tại của mình là mở 1 transaction và insert lần lượt nếu error thì rollback.
Đúng rồi, cách này là chuẩn chỉnh rồi

SQL:
begin
insert into () values ()
insert into () values ()
commit
rollback
 
Đúng rồi, cách này là chuẩn chỉnh rồi

SQL:
begin
insert into () values ()
insert into () values ()
commit
rollback
Phần handle transaction mình sẽ thực hiện bên app đúng k bạn. Do mình thấy bạn có show code SQL.

Code:
tx = db.Begin()
id, err := tx.Exec("Insert table A")
if err != nil {
    tx.rollBack()
}

err = tx.Exec("Insert table B $1", id)
if err != nil {
    tx.rollBack()
}

tx.Commit()

Đại khái là bên golang hiện tại mình đang làm như vậy
 
Cho mình hỏi nếu dùng golang trên goland thì dùng gì để debug nhỉ
Anh dùng Go để học giải Algo thì đặt break point trong Goland bình thường mà
Còn làm backend API thì cứ log ra. Chứ build rồi launch trên VPS không có log thì vỡ mồm thằng cùng team với anh.
Còn một mình anh dev sản phẩm thì tùy anh lựa chọn
 
Mình đang dùng gorm để kết nối tới mysql.
Giả sử có 1 thằng khác chỉnh sửa trong DB, có cách nào trigger 1 event gọi ngược lên server của mình không nhỉ?

Nếu không dùng mysql mà dùng redis thì giải quyết được vấn đề này không nhỉ?

Edit: đã tìm ra giải pháp dùng pub/sub broker của redis.
 
Last edited:
Mọi người giải thích giúp mình cấu trúc syntax chỗ màu vàng được không :sad:
1636352922254.png
 
Mọi người giải thích giúp mình cấu trúc syntax chỗ màu vàng được không :sad:View attachment 857376
Cài Jetbrain Goland rồi dí chuột vào những chỗ đó, nó sẽ hiện ra là cái gì
tFvvWhy.jpg

Như tôi làm C#, những chỗ không biết là gì, khi dùng Jetbrain Rider dí chuột vào nó hiện lên là gì, tôi sẽ Google tra thứ đó để hiểu luôn
lLqRnCJ.png
 
Last edited:
hi các bác, hiện e đang học thêm Go, nhưng về phần con trỏ này thì e chưa rõ lắm, là khi nào cần dùng con trỏ khi nào không,
vd như funtion này :
func getBooks(responseWriter http.ResponseWriter, request *http.Request) {
responseWriter.Header().Set("Content-Type", "application/json")
json.NewEncoder(responseWriter).Encode(books)}
vì sao phần resquest lại dùng, mà phần bên reponse thì lại không
 
hi các bác, hiện e đang học thêm Go, nhưng về phần con trỏ này thì e chưa rõ lắm, là khi nào cần dùng con trỏ khi nào không,
vd như funtion này :

vì sao phần resquest lại dùng, mà phần bên reponse thì lại không
Bản thân ResponseWriter là interface, khi truyền vào nó là pointer rồi. Thường truyền vào con trỏ khi muốn không phải copy toàn bộ struct vào hoặc muốn thay đổi giá trị.
 
Back
Top