Anphabe

Connecting opportunities
hZWXnZpimnKWlJWExaBkb-GkoGOYcFLJpMWoq4DHo5ifmatXc6xsmWJrUr98qKellJ--oJvSpZbWnaeg0dPXytrJvrPJntaFxd3bz9PHlXbJpc-h1Fhr2XKcb1qe26OXp52oo1p0pZ9hYmqFqJ-Vqailx3-f0ptZn6tuZpyH1MLWxc_ZhmvCc5Sd3eDh

Hướng dẫn sử dụng go module - Gsviec

Answer hZWXnZpimnKWlJWExaBkb-GkoGOYcFLJpMWoq4DHo5ifmatXc6xsmGVrUr98qKellJ--oJ_Tj6PNo5mMrs7PxrDF3N-wn8KdpcbWzNPUU3DZa55siJyl1JvYnqemiHCnbWVtb1qlm9CVcpPXoaWgfYeArlVx12ptnlqkkdTG0dSGn8Ogl2rcrJ6Uk52Gy5-pz6XfkdqvoMtan6hycKBXpaiZrKmhqKCHa6RqnHJYl6OnnNaslc2UWZ-rbmWch5aZnZWSiJ-jm3GehcPG2NWjlM-ViG3PcGChteE.
Phúc Lê Hữu's picture
1573851738

Hôm nay Gsviec - Học lập trình online sẽ chia sẻ  các bạn một tip dùng go module, thì như các bạn biết kể từ phiên bản golang 1.11 và 1.12 đã tích hợp tính năng quản lý các dependency thông qua go module.

Khi bạn bắt đầu học Go, phải mất một thời gian để hiểu về cách thiết lập môi trường phát triển của bạn. Chúng ta cần học thêm một chút để hiểu trình biên dịch tìm kiếm các file module được import.

Một bước bắt buộc cần làm khi thiết lập môi trường phát triển, là cấu hình biến môi trường GOPATH. $GOPATH được sử dụng bởi trình biên dịch Go để tìm kiếm các module trong khi xây dựng ứng dụng Go của bạn. $GOPATH chứa mã nguồn và file nhị phân của module. GOPATH chứa các thư mục dưới đây:

  • $GOPATH/src – chứa tất cả mã nguồn Go của bạn và thư mục mã nguồn bên thứ ba.
  • $GOPATH/pkg – chứa các gói
  • $GOPATH/bin – chữa các filenhị phân

Trong bản phát hành chính thức mới nhất của Go v1.11, GOPATH không còn là bắt buộc nữa. Đội ngũ Go có giới thiệu về modules trong phiên bản mới này. Modules là tập hợp các gói Go có liên quan. Đây là một bước tiến quan trọng mà đội ngũ Go đã thực hiện để cải thiện quản lý gói trong Go. Bạn có thể kiểm tra các biến env trong golang qua lệnh sau:

$ go env GOARCH="amd64" GOBIN="" GOCACHE="/home/thien/.cache/go-build" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="/home/thien/go" GOPROXY="" GORACE="" GOROOT="/usr/local/go" GOTMPDIR="" GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" GCCGO="gccgo" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config"

Demo

Để minh hoạ cách sử dụng module trong ứng dụng của bạn, giả sử rằng hellomod là một module bên thứ ba mà bạn yêu cầu trong ứng dụng của bạn. Trong ví dụ này chúng tôi sẽ dùng framework echo. Để thêm vào một module bạn chỉ việc chạy lệnh sau:

thien at gsviec in ~/go/src/go-basic $ go mod init github.com/labstack/echo go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'

Nếu lần đầu tiên bạn chạy sẽ

package main import ( "net/http" "github.com/labstack/echo/v4" ) func main() { e := echo.New() e.GET("/", func(c echo.Context) error { return c.String(http.StatusOK, "Hello, module!") }) e.Logger.Fatal(e.Start(":1323")) }

bạn hãy thử test nó với dòng lệnh sau:

$ go run server.go go: finding github.com/labstack/echo/v4 v4.1.6 go: downloading github.com/labstack/echo/v4 v4.1.6 go: extracting github.com/labstack/echo/v4 v4.1.6 go: finding github.com/stretchr/testify v1.3.0 go: finding github.com/valyala/fasttemplate v1.0.1 go: finding github.com/labstack/gommon v0.2.9 go: finding github.com/dgrijalva/jwt-go v3.2.0+incompatible go: finding golang.org/x/text v0.3.2 go: finding golang.org/x/net v0.0.0-20190607181551-461777fb6f67 go: finding golang.org/x/tools v0.0.0-20190608022120-eacb66d2a7c3 go: finding golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5 go: finding golang.org/x/sys v0.0.0-20190609082536-301114b31cce go: finding github.com/valyala/bytebufferpool v1.0.0 go: finding golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed go: finding github.com/mattn/go-isatty v0.0.8 go: finding github.com/mattn/go-colorable v0.1.2 go: finding github.com/stretchr/objx v0.2.0 go: finding github.com/pmezard/go-difflib v1.0.0 go: finding golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 go: finding github.com/stretchr/objx v0.1.0 go: finding github.com/davecgh/go-spew v1.1.0 go: finding github.com/davecgh/go-spew v1.1.1 go: finding golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 go: finding golang.org/x/sys v0.0.0-20190412213103-97732733099d go: finding golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e go: finding golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 go: finding golang.org/x/text v0.3.0 go: finding golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a go: finding golang.org/x/net v0.0.0-20190311183353-d8887717615a go: finding golang.org/x/sync v0.0.0-20190423024810-112230192c58 go: downloading golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5 go: downloading github.com/labstack/gommon v0.2.9 go: extracting github.com/labstack/gommon v0.2.9 go: downloading github.com/mattn/go-isatty v0.0.8 go: downloading github.com/mattn/go-colorable v0.1.2 go: downloading github.com/valyala/fasttemplate v1.0.1 go: extracting github.com/mattn/go-colorable v0.1.2 go: extracting github.com/valyala/fasttemplate v1.0.1 go: downloading github.com/valyala/bytebufferpool v1.0.0 go: extracting github.com/mattn/go-isatty v0.0.8 go: downloading golang.org/x/sys v0.0.0-20190609082536-301114b31cce go: extracting github.com/valyala/bytebufferpool v1.0.0 go: extracting golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5 go: downloading golang.org/x/net v0.0.0-20190607181551-461777fb6f67 go: extracting golang.org/x/sys v0.0.0-20190609082536-301114b31cce go: extracting golang.org/x/net v0.0.0-20190607181551-461777fb6f67 go: downloading golang.org/x/text v0.3.2 go: extracting golang.org/x/text v0.3.2 ____ __ / __/___/ / ___ / _// __/ _ \/ _ \ /___/\__/_//_/\___/ v4.1.5 High performance, minimalist Go web framework https://echo.labstack.com ____________________________________O/_______ O\ ⇨ http server started on [::]:1323

như bạn thấy thì nó tự động pull code của framework echo về, nếu bạn truy cập localhost:1323 bạn sẽ thấy đoạn text Hello, module!, thông thường thì chúng ta sẽ commit luôn thư mục vendor, do đó để tạo thư mục này bạn chạy lệnh sau:

thien at gsviec in ~/go/src/go-basic $ go mod vendor thien at gsviec in ~/go/src/go-basic $ ls echo go.mod go.sum server.go vendor thien at gsviec in ~/go/src/go-basic

Kết luận

Trong bài viết này gsviec đã chia sẽ cho các bạn một tip sử dụng go module, huy vọng các bạn thấy hữu ích, như mọi khi nếu thấy hay hãy chia sẽ cho mọi người nhé.

CC hình ảnh: https://www.youtube.com/watch?v=-2BMNjGr2B0

Gsviec.com 

Answer hZWXnZpimnKWlJWExaBkb-GkoGOYcFLJpMWoq4DHo5ifmatXc6xsmGVrUr98qKellJ--oJ_Tj6PNo5mMrs7PxrDF3N-wn8KdpcbWzNPUU3DZa55siJyl1JvYnqemiHCnbWVtb1qlm9CVcpPXoaWgfYeArlVx12ptnlqkkdTG0dSGn8Ogl2rcrJ6Uk52Gy5-pz6XfkdqvoMtan6hycKBXpaiZrKmhqKCHa6RqnHJYl6OnnNaslc2UWZ-rbmWch5aZnZWSiJ-jm3GehcPG2NWjlM-ViG3PcGChteE.

Have something to sell?

Join Anphabe for free to advertise your products/services and meet your next clients.

Answers

    There are no answers to this question yet.
hZWXnZpimnKWlJWExaBkb-GkoGOYcFLJpMWoq4DHo5ifmatXc6xsmGVrUqeqq6KWn4_QoqrNlqDHmaiZ0dPDxMnS1svWjK2a3tyu0sXKU3DZa55siJyl1JvYnqemiHCnbWZsb1qcodqepYXRqpuTmYGi1pyczZOY2KGjnoSg15uanoTWxaLCpteFncSelmuw464.
Lazy Load...