vnprovince provides a list of Vietnam administrative divisions
- get all divisions
- convert old divisions to 01/07/2025 divisions
go get github.com/TcMits/vnprovince/v2@main
- use
github.com/TcMits/vnprovince/v2@mainfor 01/07/2025 divisions
Loop
package main import ( "github.com/TcMits/vnprovince" ) func main() { vnprovince.EachDivision(func(d Division) bool { return true }) }
Convert v1 to v2
package main import ( "log" v1 "github.com/TcMits/vnprovince" v2 "github.com/TcMits/vnprovince/v2" ) func main() { v1Idx := 0 v1.EachDivision(func(d v1.Division) bool { if d.ProvinceName == "Thành phố Hồ Chí Minh" && d.DistrictName == "Quận 3" && d.WardName == "Phường 14" { return false } v1Idx++ return true }) v2Idx, ok := v2.V1IndexToV2Index(v1Idx) if !ok { log.Fatalf("Expected to find index for v1 index %d, but got none", v1Idx) } d, ok := v2.AtIndex(v2Idx) if !ok { log.Fatalf("Expected to find division at index %d, but got none", v2Idx) } if d.ProvinceName != "Thành phố Hồ Chí Minh" { log.Fatalf("Expected province name 'Thành phố Hồ Chí Minh', got '%s'", d.ProvinceName) } if d.WardName != "Phường Nhiêu Lộc" { log.Fatalf("Expected ward name 'Phường Nhiêu Lộc', got '%s'", d.WardName) } }