Go语言中文网 为您找到相关结果 43

go interface 转 string,解析json

package main import ( "encoding/json" "fmt" ) var user map[string]interface{} func main() { userJson := "{\"username\":\"system\",\"password\":\"123456\"}" json.Unmarshal([]byte(userJson), &user) fmt.Println(user) //打印结果:map[password:123456 username:system] username := user["username"] fmt.Println("username ==", username) //username == system //判断u...阅读全文

博文 2015-11-09 15:00:01 aqiang912

golang hmac的sha1加密例子

想要用go写btcchina平台的接口,api加密形式在php中是hash_hmac('sha1',$string,$key); go中的一样有hmac包,下面是代码 package main import ( "crypto/hmac" "crypto/sha1" "fmt" "io" ) func main() { //sha1 h := sha1.New() io.WriteString(h, "aaaaaa") fmt.Printf("%x\n", h.Sum(nil)) //hmac ,use sha1 key := []byte("123456") mac := hmac.New(sha1.New, key) mac.Write([]byte("aaaaaa")) fmt.Pri...阅读全文

博文 2015-03-24 10:27:13 舞林

golang md5及随机字符串

package encrypt import ( "crypto/md5" "encoding/hex" "math/rand" "time" ) // 生成32位MD5 func MD5(text string) string{ ctx := md5.New() ctx.Write([]byte(text)) return hex.EncodeToString(ctx.Sum(nil)) } // return len=8 salt func GetRandomSalt() string { return GetRandomString(8) } //生成随机字符串 func GetRandomString(len int64) string{ str := "0123456789abcd...阅读全文

博文 2015-11-03 11:00:06 lcj0304

golang.org 不能访问

最近学习Go语言,使用到goclipse这个插件,需要安装 golang.org/x/tools/cmd/oracle 这个包,一直报错,安装不上。 环境:win10,64位,go1.5 安装命令:go get golang.org/x/tools/cmd/oracle,错误提示:packagegolang.org/x/tools/cmd/oracle: unrecognized import path "golang.org/x/tools/cmd/oracle" 因为golang.org被墙的原因,可以使用github.com/golang/tools/,和 golang.org/x/tools 是一样的。 将GitHub.com目录下的文件复制或建立一个软连接到golang.org/x...阅读全文

博文 2015-10-24 23:00:08 linuxshadow

Golang加密解密

package common import ( "crypto/md5" "crypto/rand" "encoding/base64" "encoding/hex" "io" "strings" ) const ( //BASE64字符表,不要有重复 base64Table = "<>:;',./?~!@#$CDVWX%^&*ABYZabcghijklmnopqrstuvwxyz01EFGHIJKLMNOPQRSTU2345678(def)_+|{}[]9/" hashFunctionHeader = "zh.ife.iya" hashFunctionFooter = "09.O25.O20.78" ) /** * 对一个字符串进行MD5加密,不可解密 */ func GetMd5Stri...阅读全文

博文 2015-10-19 13:00:01 zhifeiya

golang 子类调用父类函数

// testStruct project main.go package main import ( "fmt" ) type A struct { Text string } type Operator interface { Say() } func (a *A) Say() { fmt.Printf("A::Say():%s\n", a.Text) } type B struct { A } func (b *B) Say() { b.A.Say() fmt.Printf("B::Say():%s\n", b.Text) } func main() { b := B{} b.Text = "hello,world" b.Say() } A::Say():hello,worldB::S...阅读全文

博文 2015-11-03 12:00:30 lcj0304

Go语言监控文件变化小程序.

package main import ( "log" "github.com/go-fsnotify/fsnotify" ) func main() { watcher, err := fsnotify.NewWatcher() if err != nil { log.Fatal(err) } defer watcher.Close() done := make(chan bool) go func() { for { select { case event := <-watcher.Events: log.Println("event:", event) if event.Op&fsnotify.Write == fsnotify.Write { log.Println("modifie...阅读全文

博文 2015-10-23 12:00:06 fyxichen

Go使用goquery获取url小实例

package main import ( "fmt" "github.com/PuerkitoBio/goquery" ) func main() { g, e := goquery.NewDocument("http://gold.3g.cnfol.com/") if e != nil { fmt.Println(e) } c := g.Find("ul") s := c.Eq(6).Find("a") s.Each(func(i int, content *goquery.Selection) { a, _ := content.Attr("href") fmt.Println(a) }) } 版权声明:本文为博主原创文章,未经博主允许不得转载...阅读全文

博文 2015-11-18 13:00:01 fyxichen

Go指南中的联系:Stringers

 练习:Stringers 让 IPAddr 类型实现 fmt.Stringer 以便用点分格式输出地址。 例如,IPAddr{1, 2, 3, 4} 应当输出 "1.2.3.4"。 下面是给出的参考模板 package main import "fmt" type IPAddr [4]byte // TODO: Add a "String() string" method to IPAddr. func main() { addrs := map[string]IPAddr{ "loopback": {127, 0, 0, 1}, "googleDNS": {8, 8, 8, 8}, } for n, a := range addrs { fmt.Printf("%v: %v\n", n...阅读全文

博文 2015-11-18 01:00:04 u013564276

Go获取Windows的网卡IO.

package main import ( "fmt" "github.com/axgle/mahonia" "github.com/shirou/gopsutil/net" nnet "net" "os" "os/exec" "strings" "time" ) var debug string func main() { if len(os.Args) != 3 && len(os.Args) != 4 { fmt.Println("Args error ...") return } R_name := strings.ToUpper(os.Args[1]) I_name := strings.ToUpper(os.Args[2]) if len(os.Args) == 4 { debu...阅读全文

博文 2015-11-09 18:00:05 fyxichen

Go语言zip解压.

package main import ( "archive/zip" "fmt" "io" "os" ) func main() { r, err := zip.OpenReader(`server_update_20151020.zip`) if err != nil { fmt.Println(err) return } for _, k := range r.Reader.File { if k.FileInfo().IsDir() { err := os.MkdirAll(k.Name, 0644) if err != nil { fmt.Println(err) } continue } r, err := k.Open() if err != nil { fmt.Println...阅读全文

博文 2015-10-20 11:00:35 fyxichen

golang 自定义错误示例

package main import ( "fmt" "time" ) // MyError is an error implementation that includes a time and message. type MyError struct { When time.Time What string } func (e MyError) Error() string { return fmt.Sprintf("%v: %v", e.When, e.What) } func oops() error { return MyError{ time.Date(1989, 3, 15, 22, 30, 0, 0, time.UTC), "the file system has gone...阅读全文

博文 2015-10-24 23:00:08 u011363248

golang 工程目录结构

GoPATH 的设置编译比较麻烦,写一个脚本在 项目目录下运行,进行直接编译: ! /bin/bash oldGOPATH=$GOPATH nowPATH=`pwd` export GOPATH=$oldGOPATH:$nowPATH echo "GOPATH = $GOPATH" go install $@ export GOPATH=$oldGOPATH` 每次都记不住 这个结构,编译的时候总找不到包, 弄个脚本创建项目目录: #!/bin/bash function usage(){ echo "usage :" echo "$0 projectName" } if [ $# != 1 ]; then usage fi projectName=$1 dir=$projectName"P...阅读全文

博文 2015-10-16 10:00:06 gaopeiliang

Go语言简单实现FTP协议.

package ftp import ( "errors" "fmt" "io" "net" "os" "strconv" "strings" ) type Ftp struct { con net.Conn ip string } func NewFtp(ip string) (*Ftp, error) { buf := make([]byte, 1024) con, err := net.Dial("tcp", ip) if err != nil { return nil, err } n, err := con.Read(buf) if err != nil { return nil, err } fmt.Println(string(buf[:n])) return &Ftp{con...阅读全文

博文 2015-10-27 15:00:05 fyxichen

golang语言中struct的初始化方式

// 先定义结构体 type Rect struct { width int height int } // 再初始化结构体 rect1 := new(Rect) rect2 := &Rect{} rect3 := &Rect{10, 20} rect4 := &Rect{width:10, height:20} // 定义 + 初始化同时进行 rect5 := &struct{width int, height int}{10, 20} 版权声明:本文为博主原创文章,未经博主允许不得转载...阅读全文

博文 2015-08-04 11:00:02 YanJiangbo

Go监控目录变化小程序.

package main import ( "flag" "log" "os/exec" "strings" "sync" "time" "github.com/go-fsnotify/fsnotify" ) var ( sleeptime int path string cmd string args []string ) func init() { flag.IntVar(&sleeptime, "t", 30, "-t=30") flag.StringVar(&path, "p", "./", "-p=filepath or dirpath") flag.StringVar(&cmd, "c", "", "-c=command") str := flag.String("a", "",...阅读全文

博文 2015-10-25 02:00:05 fyxichen

Go语言Slice操作.

1、基本用法: a = append(a, b...) 例如:list = appened(list,[]int{1,2,3,4}...) 可以用来合并两个列表. 不用这样了 :list := make([]int,len(list1)+len(list2)) 然后再copy(list,list1) copy(list[len(list1):],list2) 2、Copy: b = make([]T, len(a)) copy(b, a) 或者: b = append([]T(nil), a...) 3、Cut: a = append(a[:i], a[j:]...) 4、Delete: a = append(a[:i], a[i+1:]...) 或者: a = a[:i+copy(a[i:...阅读全文

博文 2015-11-09 11:00:42 fyxichen

Go语言的gob简单使用

编码结构体: package main import ( "encoding/gob" "fmt" "os" ) func main() { info := map[string]string{ "name": "xichen", "age": "24", } name := "test.gob" File, _ := os.OpenFile(name, os.O_RDWR|os.O_CREATE, 0777) defer File.Close() enc := gob.NewEncoder(File) if err := enc.Encode(info); err != nil { fmt.Println(err) } } 解码结构体: package main import ( "enc...阅读全文

博文 2015-10-23 19:00:36 fyxichen

golang 反射结构字段类型

golang 反射用法,做个笔记. package main import ( "fmt" "reflect" ) type roles struct { roleId int roleName string } type User struct { Name string Age int Email string NickName string Telphone int Roles roles } func main() { u := User{Name: "Name", Age: 30, Email: "xxxx@afanty3d.com", NickName: "omni360", Telphone: xxxxx, Roles: roles{roleId: 1001, roleName...阅读全文

博文 2015-11-02 15:00:31 omni360

GO 利用 sync 库实现 Barrier

GO Barrier Barrier 用于多个线程完成状态的同步。在linux的系统库中有相关的实现,在 pthread.h 中有函数声明。在golang的标准库中还没有相关的实现。下面利用sync标准库实现个简单的barrier。 实现 ----------$GOPATH/src/barrier/barrier.go----------- package barrier import ( "sync" ) type Barrier struct { curCnt int maxCnt int cond *sync.Cond } func NewBarrier(maxCnt int) *Barrier { mutex := new(sync.Mutex) cond := sync.NewCo...阅读全文

博文 2015-11-18 19:00:01 u013148156

GO 在window 64bit的下的常见问题(一)

安装 1. GO 无法识别 D:\install\GO112\test>D:\install\GO112\bin\go.exe run helloworld.go package runtime: cannot find package "runtime" in any of: c:\go\src\pkg\runtime (from $GOROOT) ($GOPATH not set) 解决方法: 安装window版的GO,会运行不起来GO,请配置 GOPATH = $GOROOT/bin - go run $GOROOT/test/helloword.go 2. 中文在CMD中显示乱码: 解决方法: 在CMD窗口无法正常显示中文: - chcp 65001 - 属性->字体->选择Luci...阅读全文

博文 2015-08-10 01:00:00 u010567180

Go语言自己实现的异步小log程序.

slog.go package slog import ( "errors" "fmt" "os" "strings" "time" ) type Logger struct { console bool warn bool info bool tformat func() string file chan string } func NewLog(level string, console bool, File *os.File, buf int) (*Logger, error) { log := &Logger{console: console, tformat: format} if File != nil { FileInfo, err := File.Stat() if err ...阅读全文

博文 2015-10-30 19:00:00 fyxichen

How to serialize/unserialize type struct in GO

How to serialize/unserialize type struct in GO package main import ( "bytes" "encoding/gob" "fmt" "log" ) type Data struct { id int name string } func (d *Data) GobEncode() ([]byte, error) { w := new(bytes.Buffer) encoder := gob.NewEncoder(w) err := encoder.Encode(d.id) if err != nil { return nil, err } err = encoder.Encode(d.name) if err != nil { ...阅读全文

博文 2015-11-09 13:00:10 u012413865

go hot update (1)

package main import ( "net" "reflect" "fmt" "os" ) func main() { listener, _ := net.Listen("tcp", ":8000") for { c , _ := listener.Accept() go connHandler(c) } } func connHandler(c net.Conn) { defer c.Close() e := reflect.TypeOf(c).Elem() n := e.NumField() for i := 0 ; i < n; i++ { fmt.Fprintf(os.Stdout, "e.Field(%d) = %v %v\n", i, e.Field(i).Name,...阅读全文

博文 2015-10-23 23:00:11 eclipser1987

golang源码安装

cd $HOME hg clone -u release https://code.google.com/p/go (速度太慢,最好是直接下载源码包) cd go/src ./all.bash (编译当前平台的go) CGO_ENABLED=0 GOARCH=arm GOOS=linux ./make.bash (编译针对arm平台的go) cd ../bin go tool 编写一个"Hello World!",把它以arm平台编译出来: CGO_ENABLED=0 GOARCH=arm go build hello.go 或者 export GOARCH=arm go build hello.go 再用adb push把hello放到/tmp/目录下: adb push hello /t...阅读全文

博文 2015-11-05 23:00:01 hechaoyuyu

Go语言的排它锁sync.Mutex

package main import ( "fmt" "sync" "time" ) var m *sync.Mutex func main() { m = new(sync.Mutex) go lock(1) time.Sleep(time.Second) lock(2) fmt.Printf("%s\n", "exit!") } func lock(i int){ println(i, "lock start") m.Lock() println(i, "lock") time.Sleep(10 * time.Second) m.Unlock() println(i, "unlock") } 版权声明:本文为博主原创文章,未经博主允许不得转载...阅读全文

博文 2015-11-05 15:00:52 wkyb608

idea配置golang

用os x的installer pkg安装go到默认路径/usr/local/go下面之后,进入idea提示找不到GOROOT和GOPATH 直接在terminal输入下列命令 launchctl setenv GOROOT /usr/local/go launchctl setenv GOPATH /Users/yourname/go 再进入即可。 版权声明:本文为博主原创文章,未经博主允许不得转载...阅读全文

博文 2015-10-22 19:00:01 kcccss111

go语言并发

 http://pragprog.com/magazines/2012-06/the-beauty-of-concurrency-in-go go并发之美 http://www.kankanews.com/ICkengine/archives/28410.shtml go简洁的并发 http://floss.zoomquiet.io/data/20120427161151/index.html Go的并发模式:超时、继续  版权声明:本文为博主原创文章,未经博主允许不得转载...阅读全文

博文 2015-06-29 19:00:00 u013834131

go 数组

package main import "fmt" import "reflect" func main() { var arr[5]int fmt.Println(reflect.TypeOf(arr)) var sli[]int fmt.Println(reflect.TypeOf(sli)) arr1 := [1]int{100} arr2 := [2]int{1,2} arr3 := [...]int{1,2,3,4,5} fmt.Println(arr,"\n",arr1,"\n",arr2,"\n",arr3) fmt.Println("二维数组") arr4 := [2][3]int {{1,2,3},{4,5,6}} fmt.Println(arr4) arr5 := [2]...阅读全文

博文 2015-11-07 13:00:05 eclipser1987

Go语言入门——Hello World

Go语言入门——Hello World 1.环境准备: 点击这里去官网下载对应的安装文件,我下载的是go1.4.2.darwin-amd64-osx10.8.pkg。 打开Terminal,输入go version,如果能看的版本号,说明go的环境已经配置好了。 2.Hello World 照例,第一个程序依旧是Hello World,在工作目录下新建test.go文件: package main import "fmt" // this is a comment func main(){ fmt.Println("Hello World") } 保存后,执行go run test.go,可以看到已经输出了Hello World。 2015年05月21日 $(function () { $(...阅读全文

博文 2015-09-20 17:00:00 JiezhiG

windows下用golang连接mssql

版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] 安装Microsoft SQL Server Native Client 安装golang的mssql驱动 写测试代码 我擦,最近下了几十个G的数据(哈哈,你们懂的),都是mssql格式的,需要处理下。想用golang处理,于是就需要golang连接mssql。 1.安装Microsoft SQL Server Native Client 去官方下载吧,下载地址: [plain] view plain copy print? http://www.microsoft.com/zh-CN/download/details.aspx?id=35580 http://www.microsoft.com/zh-CN/downlo...阅读全文

博文 2016-09-05 17:00:01 rainbowzc

windows下生成go的全平台交叉版本

allplatform.cmd :: darwin/386 darwin/amd64 freebsd/386 freebsd/amd64 freebsd/arm linux/386 linux/amd64 linux/arm windows/386 windows/amd64 call compileplatform.cmd darwin 386 call compileplatform.cmd darwin amd64 call compileplatform.cmd freebsd 386 call compileplatform.cmd freebsd amd64 call compileplatform.cmd freebsd arm call compileplatform.cmd...阅读全文

博文 2015-10-28 20:00:06 lzf_china

go设置多个GOPATH

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wyy626562203/article/details/83833904 文章目录go设置多个GOPATH go设置多个GOPATH linux: GOPATH="/home/www/gopath1:/home/www/gopath2" windows: GOPATH=f:/gopath1;f:/gopath2; 注意: go get 时默认安装到第一个GOPATH路径 go build时,有时会报同一种类型或方法不匹配,由于多个是GOPATH路径顺序不对导致的,调换一下顺序即可解...阅读全文

博文 2019-04-19 16:31:02 wyy626562203

centos 7 安装golang遇到问题: No package golang available.

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fjx1173865548/article/details/89631291 CentOS 安装golang : yum install golang 时报错:No package golang available. 解决办法: 先安装epel:yum install epel-release 然后再安装golang go version 查看安装的版...阅读全文

博文 2019-04-28 10:31:35 fjx1173865548

GO语言之路 - 目录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vivian_king/article/details/80082454 目录 GO语言之路 1 - 学习准备 GO语言之路 2 - 学习计划 GO语言之路 3 - 基础 GO语言之路 4 - Hello, GO GO语言之路 5 - 语法基础 持续更新中。。...阅读全文

博文 2018-08-22 16:32:36 vivian_king

Go基础之For循环

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhao3132453/article/details/79262375 package main import "fmt" func main() { fmt.Println("For_Simple:\n") For_Simple() fmt.Println("For_Ever:\n") For_Ever() fmt.Println("For_Break_One:\n") For_Break_One() fmt.Println("For_Break_Any:\n") For_Break_Any() } func For_Simple() { //标准For循环,注意表达式不带花括号 sum :...阅读全文

博文 2019-03-16 11:31:03 myruo