Perintah go generate boleh menjana kod, fail dan artifak secara automatik untuk memudahkan tugasan berulang. Penggunaannya adalah seperti berikut: 1. pergi jana [-n] importpath... 2. -n: Cetak kod yang dijana tanpa menunjukkan pelaksanaan sebenar 3. importpath: Laluan import pakej yang akan dijana 4. Use case contoh : Jana kod sambungan pangkalan data (pgxgen ), hasilkan fail stub perkhidmatan gRPC (protoc --go-grpc).
Jika anda bosan melakukan tugasan berulang secara manual, maka perintah go generate
adalah penyelamat nyawa anda. Perintah berkuasa ini boleh membantu anda menjana kod, fail dan artifak lain, menjimatkan banyak masa dan usaha. go generate
命令就是你的救命稻草。这个强大的命令可以帮你生成代码、文件和其他工件,从而节省大量时间和精力。
go generate
命令的基本语法如下:
go generate [-n] importpath...
其中:
-n
:表示只打印生成的代码,而不实际执行importpath
:要生成的包的导入路径go generate
命令有很多实际用途,这里举几个例子。
生成数据库连接代码
如果你正在使用像 github.com/jackc/pgx
这样的数据库库,你可以使用 go generate
来生成数据库连接代码。例如:
//go:generate pgxgen -database pgxgen -skip-columns "ID" -skip-package pgxgen package pgxgen import "database/sql" import _ "github.com/jackc/pgx/stdlib" // pgx driver needed for generate import _ "github.com/jackc/pgx/gen/dbinit" var DB *sql.DB
运行 go generate
会根据你的数据库模式生成 db.go
文件,其中包含连接到数据库的 *sql.DB
。
生成gRPC服务桩文件
如果你正在使用 github.com/golang/protobuf
库,你可以使用 go generate
来生成 gRPC 服务桩文件。例如:
//go:generate protoc --go-grpc ./*.proto package main import ( "context" "log" pb "github.com/example/mypackage/api/v1" "google.golang.org/grpc" ) func main() { // gRPC server address addr := "localhost:5000" // Connect to gRPC server conn, err := grpc.Dial(addr, grpc.WithInsecure()) if err != nil { log.Fatalf("Did not connect: %v", err) } defer conn.Close() client := pb.NewGreeterClient(conn) // Call gRPC service resp, err := client.SayHello(context.Background(), &pb.HelloRequest{Name: "John"}) if err != nil { log.Fatalf("Could not greet: %v", err) } log.Printf("Greeting: %s", resp.Message) }
运行 go generate
会生成 pb.go
文件,其中包含 gRPC 服务桩的代码。
go generate
命令是一个强大的工具,可以让你自动化代码生成任务。通过充分利用 go generate
go generate
Sintaks asas arahan adalah seperti berikut: 🎜rrreee🎜Antaranya: 🎜-n
: bermaksud hanya mencetak kod Dijana tanpa pelaksanaan sebenarimportpath
: Laluan import pakej yang akan dijanago generate
mempunyai banyak kegunaan praktikal, berikut adalah beberapa contoh. 🎜🎜Jana kod sambungan pangkalan data🎜🎜Jika anda menggunakan pustaka pangkalan data seperti github.com/jackc/pgx
, anda boleh menggunakan go generate
untuk menjana kod sambungan pangkalan data. Contohnya: 🎜rrreee🎜Menjalankan go generate
akan menjana fail db.go
berdasarkan skema pangkalan data anda, yang mengandungi *sql.DB
yang disambungkan ke pangkalan data >. 🎜🎜Jana fail stub perkhidmatan gRPC🎜🎜Jika anda menggunakan pustaka github.com/golang/protobuf
, anda boleh menggunakan go generate
untuk jana fail stub perkhidmatan gRPC. Contohnya: 🎜rrreee🎜Menjalankan go generate
akan menjana fail pb.go
, yang mengandungi kod stub perkhidmatan gRPC. 🎜go generate
ialah alat berkuasa yang membolehkan anda mengautomasikan tugas penjanaan kod. Dengan memanfaatkan sepenuhnya keupayaan go generate
, anda boleh menjimatkan banyak masa dan usaha. 🎜Atas ialah kandungan terperinci Senjata rahsia menjana dalam arahan pergi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!