ถ้าสมมุติว่าเราเห็น package ที่น่าสนใจอื่นๆนอกเหนือจาก standard library ใน go แล้วอยากเอามาลองเล่น
ยกตัวอย่างเช่น https://github.com/kelseyhightower/envconfig
สร้าง main.go
ขึ้นมาจากนั้นก๊อป code ในตัวอย่างไปแปะ
package main
import (
"fmt"
"log"
"time"
"github.com/kelseyhightower/envconfig"
)
type Specification struct {
Debug bool
Port int
User string
Users []string
Rate float32
Timeout time.Duration
ColorCodes map[string]int
}
func main() {
var s Specification
err := envconfig.Process("myapp", &s)
if err != nil {
log.Fatal(err.Error())
}
format := "Debug: %v\nPort: %d\nUser: %s\nRate: %f\nTimeout: %s\n"
_, err = fmt.Printf(format, s.Debug, s.Port, s.User, s.Rate, s.Timeout)
if err != nil {
log.Fatal(err.Error())
}
fmt.Println("Users:")
for _, u := range s.Users {
fmt.Printf(" %s\n", u)
}
fmt.Println("Color codes:")
for k, v := range s.ColorCodes {
fmt.Printf(" %s: %d\n", k, v)
}
}
go get
เราจะเจอกับ error ที่บอกว่าหา go.mod ของเราไม่เจอ
go run main.go
go: go.mod file not found in current directory or any parent directory; see 'go help modules'
ใหไปเช็คที่ go env
ก่อน ว่าค่า GO111MODULE=auto
รึยังถ้ายังก็เปลี่ยนมันซะ
go env -w GO111MODULE=auto
จากนั้นให้ go get
อีกรอบคับ
go get
export MYAPP_DEBUG=false
export MYAPP_PORT=8080
export MYAPP_USER=Kelsey
export MYAPP_RATE="0.5"
export MYAPP_TIMEOUT="3m"
export MYAPP_USERS="rob,ken,robert"
export MYAPP_COLORCODES="red:1,green:2,blue:3"
go run main.go
Debug: false
Port: 8080
User: Kelsey
Rate: 0.500000
Timeout: 3m0s
Users:
rob
ken
robert
Color codes:
red: 1
green: 2
blue: 3
สำหรับคนที่พึ่งลง go 1.16 อาจจะไม่เจอปัญหานี้
เพราะว่าค่าของ GO111MODULE
น่าจะเป็น auto
มาอยู่แล้ว
จริงๆ มันก็มีวิธีสร้าง go mod ที่เร็วกว่าวิธีนี้อยู่เหมือนกัน นะ 🤣
Top comments (0)