golang 内置函数new() 和struct{} 初始化的区别

new() 这是一个用来分配内存的内置函数,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配的 t 类型的零值的指针。 在golang的代码定义如下: func new(t Type) *Type strut{} 直接使用struct{} 来初始化strut时,返回的是一个struct类型的值,而不是指针两者是不一样的 两者对比代码如下: type Student struct{ id int name string } func main(){ var s_1 *Student...阅读全文

2015-03-26 22:45 happinessaflowe 等
阅读:27627 评论:1

Go语言 Cookie的使用

首先看看Cookie的结构体 type Cookie struct { Name string Value string Path string // optional Domain string // optional Expires time.Time // optional RawExpires string // for reading cookies only // MaxAge=0 means no 'Max-Age' attribute specified. // MaxAge<0...阅读全文

2016-01-31 20:19 project
阅读:16806 评论:0

golang 图片处理,剪切,base64数据转换,文件存储

本文主要介绍: 1. 图片文件的读写。 2. 图片在go缓存中如何与base64互相转换 3. 图片裁剪 本文中,为了方便查看,去掉所有错误判断 base64 -> file ddd, _ := base64.StdEncoding.DecodeString(datasource) //成图片文件并把文件写入到buffer err2 := ioutil.WriteFile("./output.jpg", ddd, 0666) //buffer输出到jpg文件中(不做处理,直接写到文件) data...阅读全文

阅读:8182 评论:0

beego下根据部署环境加载相应配置文件

最近用beego开发的项目频繁的要部署到测试环境提测,然后部署到线上发布,由于两种环境下配置文件中某些配置参数不同,每次手动修改很是麻烦,故而想有没有办法能根据部署环境的不同加载相应环境的配置变量。幸而得同事告知,两种环境下都会注入ENV_CLUSTER这个系统环境变量,且变量值不同。于是,在main函数beego.Run()执行前,我创建了一个预先执行的init文件,将自适应环境加载配置文件的代码逻辑放在了这里。具体代码如下: env := os.Getenv("ENV_CLUSTER") i...阅读全文

2016年05月05日发布 EndlessIdea
阅读:2760 评论:1

在 Golang 中使用 Go 关键字和 Channel 实现并行

Go 关键字和 channel 的用法 go 关键字用来创建 goroutine (协程),是实现并发的关键。go 关键字的用法如下: //go 关键字放在方法调用前新建一个 goroutine 并让他执行方法体 go GetThingDone(param1, param2); //上例的变种,新建一个匿名方法并执行 go func(param1, param2) { }(val1, val2) //直接新建一个 goroutine 并在 goroutine 中执行代码块 go { //do s...阅读全文

2016年05月05日发布 Airy
阅读:3779 评论:0

对Golang interface的理解

理解golang的interface主要在于以下两点: interface是方法的集合 interface是一种类型 简单示例 package main import "fmt" type Animal interface { Speak() string } type Cat struct{} func (c Cat) Speak() string { return "cat" } type Dog struct{} func (d Dog) Speak() string { return "...阅读全文

阅读:22513 评论:4

golang如何获取变量的类型:反射,类型断言

July 29, 2017 in Tech 感觉接口的理解还有些不是很清楚,强写一篇 如果某个函数的入参是interface{},有下面几种方式可以获取入参的方法: 1 fmt: import "fmt" func main() { v := "hello world" fmt.Println(typeof(v)) } func typeof(v interface{}) string { return fmt.Sprintf("%T", v) } 2 反射: import ( "reflect...阅读全文

阅读:28113 评论:1

Golang中用interface{}接收任何参数与强转

函数的传值中,interface{}是可以传任意参数的,就像java的object那样。 下面上我第一次想当然写的 ** 错误 **代码 package main func main() { Any(2) Any("666") } func Any(v interface{}) { v1:=int(v) println(v1) } 我只是想它能通过编译而已,因为上面的错误代码并没有任何的语法错误,心里只有666想说,下面是编译的错误提示: cannot convert v (type inter...阅读全文

2017.09.16 20:53* 送你一碗大麦茶
阅读:25090 评论:1

图解 Go 并发编程

你很可能从某种途径听说过 Go 语言。它越来越受欢迎,并且有充分的理由可以证明。 Go 快速、简单,有强大的社区支持。学习这门语言最令人兴奋的一点是它的并发模型。 Go 的并发原语使创建多线程并发程序变得简单而有趣。我将通过插图介绍 Go 的并发原语,希望能点透相关概念以方便后续学习。本文是写给 Go 语言编程新手以及准备开始学习 Go 并发原语 (goroutines 和 channels) 的同学。 ## 单线程程序 vs. 多线程程序 你可能已经写过一些单线程程序。一个常用的编...阅读全文

2018-07-29 22:11:48 mbyd916
阅读:22064 评论:16