您的位置:

关于golangkeys的信息

本文目录一览:

golang 根据keys获取的key列表批量删除

package main

import (

"fmt"

"github.com/garyburd/redigo/redis"

)

func main() {

conn, err := redis.Dial("tcp", "a href="EUBtznjR1PHndnWnzrj03PW01P1fL" target="_blank" class="baidu-highlight"127.0.0.1/a:6379")

if err != nil {

panic(err)

}

defer conn.Close()

conn.Do("SET", "app1", "test1")

conn.Do("SET", "app2", "test2")

val, err := redis.Strings(conn.Do("KEYS", "app*"))

fmt.Println(val, err)

conn.Send("MULTI")

for i, _ := range val {

conn.Send("DEL", val[i])

}

fmt.Println(conn.Do("EXEC"))

}

Go是Google开发的一种编译型,可平行化,并具有垃圾回收功能的编程语言。

罗布·派克(Rob Pike),罗伯特·格瑞史莫(Robert Griesemer),及肯·汤普逊于2007年9月开始设计Go语言,稍后Ian Lance Taylor, Russ Cox加入项目中。

Go语言是基于Inferno操作系统所开发的。[4]Go语言于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后追加Windows系统下的实现。

golang 解析ini哪个包好

我以前用过一个,你看着合适可以拿去用。

特点是只读,而且不适合太大的文件(因为要全部加载到内存里)。

package ini

import (

"bufio"

"io"

"os"

"strconv"

"strings"

)

type section map[string]string

type File struct {

sections map[string]section

}

func NewFile(path string) (*File, error) {

f, err := os.Open(path)

if err != nil {

return nil, err

}

defer f.Close()

return New(f), nil

}

func New(f io.Reader) *File {

m := make(map[string]section)

r := bufio.NewReader(f)

sec := ""

var line string

var err error

for err == nil {

line, err = r.ReadString('\n')

line = strings.TrimSpace(line)

if line == "" || line[0] == ';' {

continue

}

if line[0] == '[' line[len(line)-1] == ']' {

sec = line[1 : len(line)-1]

_, ok := m[sec]

if !ok {

m[sec] = make(section)

}

continue

}

if sec == "" {

continue

}

pair := strings.SplitN(line, "=", 2)

if len(pair) != 2 {

continue

}

key := strings.TrimSpace(pair[0])

val := strings.TrimSpace(pair[1])

if key == "" || val == "" {

continue

}

m[sec][key] = val

}

return File{m}

}

func (p *File) Sections() []string {

s := make([]string, len(p.sections))

i := 0

for k, _ := range p.sections {

s[i] = k

i++

}

return s

}

func (p *File) HasSection(section string) bool {

_, ok := p.sections[section]

return ok

}

func (p *File) Keys(sec string) []string {

m, ok := p.sections[sec]

if !ok {

return nil

}

keys := make([]string, len(m))

i := 0

for key, _ := range m {

keys[i] = key

i++

}

return keys

}

func (p *File) GetString(sec, key, def string) string {

m, ok := p.sections[sec]

if !ok {

return def

}

v, ok := m[key]

if !ok {

return def

}

return v

}

func (p *File) GetInt(sec, key string, def int) int {

m, ok := p.sections[sec]

if !ok {

return def

}

v, ok := m[key]

if !ok {

return def

}

i, err := strconv.ParseInt(v, 10, 32)

if err != nil {

return def

}

return int(i)

}

func (p *File) GetUint(sec, key string, def uint) uint {

m, ok := p.sections[sec]

if !ok {

return def

}

v, ok := m[key]

if !ok {

return def

}

i, err := strconv.ParseUint(v, 10, 32)

if err != nil {

return def

}

return uint(i)

}

func (p *File) GetBool(sec, key string, def bool) bool {

m, ok := p.sections[sec]

if !ok {

return def

}

v, ok := m[key]

if !ok {

return def

}

return v != "0"

}

golang 实现bitmap

type bitmap struct {

    keys []byte

    len int

}

func NewBitMap() *bitmap {

    return bitmap{keys:make([]byte, 0), len:0}

}

func (b *bitmap)has(v int) bool {

    k := v /8

   kv :=byte(v %8)

    if k len(b.keys) { //todo not exist

          return false

      }

    if b.keys[k](1kv) != 0 {

        return true

    }

    return false

}

func (b *bitmap)set(v int) {

    k := v /8

    kv :=byte(v %8)

    for b.len = k {

        b.keys =append(b.keys, 0)

        b.len++

    }

    b.keys[k] =b.keys[k] | (1 kv)

}

func (b *bitmap)length()int {

    return b.len

}

func (b *bitmap)print() {

    for _, v :=range b.keys {

        fmt.Printf("%08b\n", v)

    }

}