[golang]stringおよびmap[string]stringタイプのパッケージ

1649 ワード

urlパラメータを処理するとき、文字列タイプを常に他のタイプに変換するために、コードが冗長で面倒だと感じますか?だから私は自分のいくつかのプロジェクトで使った文字列のパッケージを抽出して、みんなに使用してもらいました.具体的な実装は非常に簡単で、liamylian/valuesに表示されます.次に、使用方法を示します.
    import "github.com/liamylian/values"

    var v values.Value

    //      ,          
    v = values.Value("")
    d := v.Default("happy").String()

    //     
    v = values.Value("")
    isEmpty := v.IsEmpty()

    //     
    v = values.Value("1")
    s := v.String()
    b := v.Bool()
    f32 := v.Float32()
    f64 := v.Float64()
    i := v.Int()
    u := v.Uint()
    i8 := v.Int8()
    u8 := v.Uint8()
    i16 := v.Int16()
    u16 := v.Uint16()
    i32 := v.Int32()
    u32 := v.Uint32()
    i64 := v.Int64()
    u64 := v.Uint64()

このほか、map[string]stringをパッケージ化したValuesタイプ.下地にsyncが使われているからです.Mapは、スレッドの安全を保証し、読み書きにロックをかけない.使用法は次のとおりです.
    import "github.com/liamylian/values"

    //  map  
    m := map[string]Value{"foo": "bar"}
    vs := values.FromMap(m)

    //    map
    vs.ToMap()

    // json        
    bytes, _ :=json.Marshal(vs)
    json.Unmarshal([]byte(`{"foo":"bar","int":1,"bool":true}`), &vs)

    //    
    value, exists := vs.Get("foo")

    //    
    vs.Set("earth", "moon")
    
    //    
    vs.Delete("foo")

    //      
    m = map[string]Value{"bar": "foo", "moon":"earth"}
    vs.Sets(m)
    
    //   
    vs.Range(func(key string, value Value) bool {
        fmt.Println("%s: %s", key, value)
        return true
    })