随笔分类 - Golang
摘要:Golang要操作mysql数据库,首先需要在当期系统配置GOPATH,因为需要使用go get命令把驱动包下载到GOPATH下使用。 首先配置好你的GOPATH,执行以下命令,下载安装mysql驱动,下载完成之后会在GOPATH下的src/github.com目录下 go get -u githu
阅读全文
摘要://截取普通字符串 func substr(title interface{}) string { title_pro := title.(string) rs := []rune(title_pro) str := string(rs[0:len(rs)-4])return str }
阅读全文
摘要:package main import ( "fmt" ) func main() { str := "hello" arr := []byte(str) fmt.Println(arr) str2 = string(arr[:]) fmt.Println(str2) }
阅读全文
摘要:在系统环境下实现redis操作必须做好以下准备 一、当前系统必须下载安装redis 二、配置好GOPATH环境变量,并下载GO的redis驱动包 当做好以上准备工作时,紧接着如下 看以下要使用的驱动包地址(方便查看封装的源码,应用在项目开发中) 下载驱动包 简单操作 以上代码只简单举例,项目中遇到复
阅读全文
摘要:一、第一种写法 首先说一下遇到的一个问题 sql: converting argument $1 type: unsupported type []int, a slice of int 以下代码是最初遇到问题的代码 解决方案 二、第二种写法 三、第三种写法
阅读全文
摘要:Golang终止程序运行(类似php die; exit;)和打印变量(print_r)
阅读全文
摘要:所谓超时,比如上网浏览一些安全的网站,如果几分钟之后不做操作,那么就会让你重新登录。就所谓有时候出现goroutine阻塞的情况,那么我们如何避免整个程序进入阻塞情况,这时候就可以用select来设置超时 补充代码
阅读全文
摘要:上面是使用select,下面用普通函数实现
阅读全文
摘要:select可以监听channel的数据流动select的用法与switch语法非常类似,由select开始的一个新的选择块,每个选择条件由case语句来描述 与switch语句可以选择任何使用相等比较的条件相比,select由比较多的限制,其中最大的一条限制就是每个case语句里必须是一个IO操作
阅读全文
摘要:在Centos6.4尝试搭建beego框架,使用git命令clone时报错 解决办法有三种 第一,升级git 第二,在github下载源码包放到对应目录 第三,命令修复 执行完成之后,继续执行命令clone :go get github.com/astaxie/beego
阅读全文
摘要:package main import ( "crypto/md5" "fmt" "io" ) func main() { str := "123456" //方法一 data := []byte(str) has := md5.Sum(data) md5str1 := fmt.Sprintf("%x", has) //将[]b...
阅读全文
摘要:在Golang中,一个类只需要实现了接口要求的所有函数,我们就说这个类实现了该接口。 空接口可以接收任何类型的值赋值
阅读全文
摘要:无缓冲通道 是指在接收前没有能力保存任何值得通道。这种类型的通道要求发送goroutine和接收goroutine同时准备好,才能完成发送和接收操作。如果两个goroutine没有同时准备好,通道会导致先执行发送或接收操作的goroutine阻塞等待。这种对通道进行发送和接收的交互行为本身就是同步的
阅读全文
摘要:概念及作用 channel是一个数据类型,用于实现同步,用于两个协程之间交换数据。goroutine奉行通过通信来共享内存,而不是共享内存来通信。引用类型channel是CSP模式的具体实现,用于多个goroutine通讯。其内部实现了同步,确保并发安全。 创建及使用每个channel在创建的时候必
阅读全文
摘要:runtime.Gosched(),用于让出CPU时间片,让出当前goroutine的执行权限,调度器安排其它等待的任务运行,并在下次某个时候从该位置恢复执行。这就像跑接力赛,A跑了一会碰到代码runtime.Gosched()就把接力棒交给B了,A歇着了,B继续跑。 runtime.Goexit(
阅读全文
摘要:Go语言为并发编程而内置的上层API基于CSP(communication sequential processes,顺序通信进程)模型。这就意味着显式锁都是可以避免的,比如资源竞争,比如多个进程同时获取文件资源需要修改,首先拿到资源的进程加上锁,等修改完之后把锁去掉,然后再给下一个进程来进行修改,
阅读全文
摘要:package main import ( "fmt" "io" "os" ) func main() { list := os.Args //获取命令行参数 if len(list) != 3 { fmt.Println("usage: xxx srcFile dstFile") return } s...
阅读全文
摘要:package main import ( "bufio" "fmt" "io" "os" ) //写 func WriteFile(path string) { //打开文件,新建文件 f, err := os.Create(path) //传递文件路径 if err != nil { //有错误 ...
阅读全文
摘要:结构体生成Json package main import ( "encoding/json" "fmt" ) type IT struct { Company string `json:"-"` //此字段不会输出到屏幕 //Company string `json:"company"` 这样打印
阅读全文
摘要:package main import "fmt" type Person struct { name string //名字 sex byte //性别 age int //年龄 } type Student struct { Person //只有类型,没有名字,匿名字段,继承了Person的成员 id int ad...
阅读全文