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

go reflect TypeOf 与ValueOf

学习go的反射对于理解go的底层实现以及接口机制有着非常重要的价值;本篇文章从一个源程序来体验一下go反射的两个核心函数TypeOf 和ValueOf的使用方法,特别体验下怎么根据type构造type实例的办法。 package main import ( "fmt" "reflect" ) type Speaker interface { Speak()string Set(string) } type Teacher struct { Name string } func (this *Teacher) Speak() string { return this.Name } func (this *Teacher) Set(name string) { this.Name = name ...阅读全文

博文 2015-06-18 09:03:56 hittata

go-xorm使用mssql的小实例

package main import ( "fmt" "os" "time" "github.com/go-xorm/core" "github.com/go-xorm/xorm" _ "github.com/lunny/godbc" ) type NxServerState struct { ID int `xorm:"pk not null 'ID'"` GameID int `xorm:"not null 'GameID'"` IssuerId int `xorm:"not null IssuerId"` ServerID int `xorm:"not null ServerID"` ServerName string `xorm:"ServerName"` OnlineNum in...阅读全文

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

go语言初始化结构体new方法的区别

初学go,实例化一个对象的时候,搞得有点晕,以前学php,需要一个对象之间new一个即可,但是在go里面有三种方法,如下 a:=new(user) b:=&user{} c:=user{} 好似这三种方法都可以实现,这是什么原因呢,区别在哪里? ok,请看下面例子 package main import ( "fmt" ) type user struct { id int `1123` } func main() { a := &user{} a.id = 111 b := user{} b.id = 222 c := new(user) c.id = 333 fmt.Println(a, b, c) } 运行后结果如下 &{111} {222} &{333} 现在基本清楚,new(use...阅读全文

博文 2015-11-14 18:00:01 haitgo

golang学习的点点滴滴:利用组合实现继承

package main import "fmt" type Base struct { Name string } func (b *Base) SetName(name string) { b.Name = name } func (b *Base) GetName() string { return b.Name } // 组合,实现继承 type Child struct { base Base // 这里保存的是Base类型 } // 重写GetName方法 func (c *Child) GetName() string { c.base.SetName("modify...") return c.base.GetName() } // 实现继承,但需要外部提供一个Base的实例...阅读全文

博文 2014-10-04 19:27:41 亓斌哥哥

golang RSA加密解密程序

package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "errors" "fmt" ) // 加密 func RsaEncrypt(origData []byte) ([]byte, error) { block, _ := pem.Decode(publicKey) //将密钥解析成公钥实例 if block == nil { return nil, errors.New("public key error") } pubInterface, err := x509.ParsePKIXPublicKey(block.Bytes) //解析pem.Decode()返回的Block指针实例 i...阅读全文

博文 2016-04-20 21:00:01 su_sai

golang学习的点点滴滴:接口复制和接口查询

package main import "fmt" type IFile interface { Read() Write() } type IReader interface { Read() } type File struct { } func (f *File) Read() { } func (f *File) Write() { } func main() { f := new(File) var f1 IFile = f // ok 因为FIle实现了IFile中的所有方法 var f2 IReader = f1 // ok 因为IFile中包含IReader中所有方法 // var f3 IFile = f2 // error 因为IReader并不能满足IFile(少一个方...阅读全文

博文 2014-10-04 19:27:40 亓斌哥哥

GoLang练习实例100之001----切片转换为Map

package main import "fmt" //切片转换为Map func slice_To_Map(s_key, s_value []string) (map[string]string) { mapObj := map[string]string{} for s_key_index := range s_key { mapObj[s_key[s_key_index]] = s_value[s_key_index] } return mapObj } func main() { s_key := []string{"a", "b", "c", "d", "e"} s_value := []string{"1", "2", "3", "4", "5"} r_map := slice_...阅读全文

博文 2018-03-20 00:33:04 不折腾难受斯基

GO语言练习:channel 工程实例

1、工程代码 2、编译及运行 1、工程目录结构 $ tree cgss cgss ├── cgss.go └── src ├── cg │ ├── centerclient.go │ ├── center.go │ └── player.go └── ipc ├── client.go ├── ipc_test.go └── server.go 1.1)主文件cgss.go 文件代码 1 package main 2 3 import ( 4 "bufio" 5 "fmt" 6 "os" 7 "strconv" 8 "strings" 9 10 "cg" 11 "ipc" 12 ) 13 14 var centerClient * cg.CenterClient 15 16 func sta...阅读全文

博文 2015-07-20 03:00:00 fengbohello

用Go语言实现IOS消息推送

下面是关于用Go语言实现的IOS消息推送实例 package main import ( "fmt" "github.com/virushuo/Go-Apns" "os" "time" ) func main() { apn, err := apns.New("apns_dev_cert.pem", "apns_dev_key.pem", "gateway.sandbox.push.apple.com:2195", 1*time.Second) if err != nil { fmt.Printf("connect error: %s\n", err.Error()) os.Exit(1) } fmt.Println("connect successed!") go readError(ap...阅读全文

博文 2015-06-17 23:00:30 newsyoung1

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

golang printf

1: 打印包括字段在内的实例的完整信息 同 %+V fmt.Printf("Hello world! %v","hufeng") 输出:Hello world! hufeng 2:打印包括字段和限定类型名称在内的实例的完整信息 fmt.Printf("Hello world! %#v","hufeng") Hello world! "hufeng" 3:打印某个类型的完整说明 fmt.Printf("Hello world! %T","hufeng") Hello world! string 4: fmt.Printf("Hello world! %t",false); Hello world! false 5: fmt.Printf("Hello world! %%"); Hello wo...阅读全文

博文 2014-10-04 19:26:00 dyllove98

GO 语言 C/S 编程实例

package main //*********************************server***************************************** import ( "fmt" "net" "bufio" ) func main() { listener , err := net.Listen("tcp",":8000");//listen localhost:8000 if err != nil { return; } for{ conn,err := listener.Accept();// wait for accept if err != nil { fmt.Printf("%s\n",err); continue; } go handle...阅读全文

博文 2015-06-17 23:07:44 juxuny

Python类的实例属性详解

  实例属性   1.类被实例化后才会具有的属性   2.一般在_init_()方法中创建并初始化   3.直接使用即定义:self.<属性名>   4.引用方法:self.<属性名>   5.self用来表示类的实例的   例如:在类TestCss当中定义实例属性   class TestCss:   cssa = 'class-attribe'   def __init__(self):   self.a = 0   self.b = 10   def info(self):   print('a:',self.a,'b:',self.b)   if __name__ == '__main__': ...阅读全文

GoLang练习实例100之003----完全平方数

package main import ( "fmt" ) //题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少 func main() { for i :=1; i<=85; i++{ if 168 % i==0{ j := 168 / i if (i>j) && ((i + j) % 2==0) && ((i - j) % 2 == 0){ //m := (i + j) / 2 n := (i - j) / 2 x := n * n - 100 fmt.Printf("符合条件的整数有:%s\n",x) } } } ...阅读全文

博文 2018-03-20 22:33:04 不折腾难受斯基

go 类型方法 receiver的理解

package main import "fmt" type Person struct{ name string age int } func (this *Person) Growth(){ this.age ++ } func (this *Person) ChangeName(newname string){ this.name = newname } func main(){ p := Person{"wangzy", 30} p.Growth() fmt.Printf("%d", p.age) } 因为go不是面向对象的,struct也不是类,没有类方法,但是通过类型方法,提供该struct 的方法,类似类方法了。 可以通过类实例去调用。 感觉完全可以替换的 可以通过该结构体的引...阅读全文

博文 2016-04-02 23:00:01 frankwangzy1103

golang 日期常用方法整理

//获取当前时间 now := time.Now() fmt.Println("now", now) //now 2019-07-16 18:16:12.457678344 +0800 CST m=+0.000443035 // time转化为string类型 _now :=now.String() fmt.Println("_now", _now) //_now 2019-07-16 18:16:12.457678344 +0800 CST m=+0.000443035 // 转化为string类型,也可以用Format。 // 用Format更加可控,可以指定输出的日期时间格式 _n1 := now.Format("2006-01-02") fmt.Println("_n1", _n1)...阅读全文

博文 2019-07-16 20:32:41 louhangfei

GoLang练习实例100之004----判断日期是这一年的第几天

package main import ( "fmt" ) var( input_Data int result int year_data int month_data int day_data int sum int ) //题目:输入某年某月某日,判断这一天是这一年的第几天? func get_Input(input_Type string) (int,error) { switch input_Type { case "year": fmt.Println("输入年份: ") fmt.Scanln(&input_Data) if input_Data <1 { fmt.Println("年份输入错误,请重新输入!") break } result = input_Data case ...阅读全文

博文 2018-03-21 08:33:04 不折腾难受斯基

GO语言练习:反射

列举几个反射的例子:1)简单类型反射,2)复杂类型反射,3)对反射回来的数据的可修改属性 1、简单类型反射 1.1)代码 package main import ( "fmt" "reflect" ) func main() { var x float64 = 3.4 v := reflect.ValueOf(x) fmt.Println("type :", v.Type()) fmt.Println("kind is float64:", v.Kind() == reflect.Float64) fmt.Println("value:", v.Float()) } 1.2)运行结果 $ go run reflect.go type : float64 kind is float64: tr...阅读全文

博文 2015-08-01 03:00:01 fengbohello

Go实例学:数值

Go有很多种数据类型,包括字符串类型,整型,浮点型,布尔型等等,这里有几个基础的例子。 package main import "fmt" func main() { // 字符串可以使用"+"连接 fmt.Println("go" + "lang") //整型和浮点型 fmt.Println("1+1 =", 1+1) fmt.Println("7.0/3.0 =", 7.0/3.0) // 布尔型的几种操作符 fmt.Println(true && false) fmt.Println(true || false) fmt.Println(!true) } 输出结果为 golang 1+1 = 2 7.0/3.0 = 2.3333333333333335 false true fals...阅读全文

博文 2014-11-28 16:00:02 Goopand

GoLang练习实例100之006----斐波那契数列

package main import "fmt" //斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。 //使用递归方式实现输出前20个斐波那契数 func fib(n int) int { if n==1{ return 1 }else if n==2{ return 1 } return fib(n-1)+fib(n-2) } func main(){ fibs := []int{} for i:=1;i<=20;i++{ fibs=append(fibs,fib(i)) } fmt.Println(fibs) ...阅读全文

博文 2018-03-22 20:33:04 不折腾难受斯基

Go语言-信号os.Interrupt和信号syscall.SIGTERM的应用

实例 package main import( "fmt" "os" "os/signal" "sync" "syscall" "time" ) func worker(stop <-chan bool) { for { select { case <-stop: fmt.Println("exit") return default: fmt.Println("running...") time.Sleep(3) } } } func main() { stop := make(chan bool) var wg sync.WaitGroup for i := 0; i < 3; i++ { wg.Add(1) go func(stop <-chan bool) { defer wg.Don...阅读全文

博文 2018-07-02 21:35:13 二郎神六号

golang关于json库的一个比较容易陷入的坑 uint8[]数组的json转换问题.

类似这个CA如果实例转化成json.List会变成字符串. type CA struct { List []uint8 } func main() { ca := CA{[]uint8{1,2,3,4,5,6,7,8,9,0}} r, _ := json.Marshal(ca) fmt.Println(string(r)) //{"List":"AQIDBAUGBwgJAA=="} } 而我们希望的是要一个正常的json. 只有 int8 byte uint8 这种8位的json库会给我们当成字符串处理.想要解决.如果拍脑袋就不能用这几种类型了.需要使用16 32 64位的数字才可以正常转换成json字符串. {"List":[1,2,3,4,5,6,7,8,9,0]} 但是不用担心. Un...阅读全文

博文 2015-06-17 20:17:45 spiritring

golang的函数

在golang中, 函数是第一类值(first-class object), 即函数可以赋值与被赋值. 换言之, 函数也可以作为ReceiverType, 定义自己的method. 实例: http.HandleFunc(pattern string, handler func(ResponseWriter, *Request)) 就是使用上述思想实现. type HandlerFunc func(ResponseWriter, *Request) func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request){ f(w,r) } 定义HandlerFunc类型, 本质为func(ResponseWriter, *Request). ...阅读全文

博文 2016-09-09 18:00:02 zolo

golang单例模式的优雅实现

通过sync.Once实例来保证一个Once实例的Do只会执行一次,无论Do里的func有多个或者一个,利用这个特性来实现设计模式里的单例模式,golang里没有类这个东西,所以拿结构体来测试:type singleton struct{} var ins *singleton var once sync.Once func GetIns() *singleton { once.Do(func(){ ins = &singleton{} //ins = new(singleton) }) return ins}sync.Once doc:type OnceOnce is an object that will perform exactly one action.type Once stru...阅读全文

博文 2018-06-21 08:34:47 夜空一起砍猩猩

GoLang练习实例100之009----格式输出当前时间

package main import ( "fmt" "time" ) func main() { //获取当前时间 x := time.Now() //格式说明:2006-01-02 15:04:05每组数字都有对应着独特的含义==我们其他语言常用的YY:mm:ss HH-MM-SS fmt.Println(x.Format("2006-01-02 15:04:05")) time.Sleep(1000000000) //等待1秒 fmt.Println(time.Now().Format("2006-01-02 15:04:05")) ...阅读全文

博文 2018-03-27 00:33:05 不折腾难受斯基

go 语言 连接mysql(简单实例)

package main import ( "fmt" "database/sql" _"./gomysql" // ) func main(){ db, err := sql.Open("mysql","root:123123123@tcp(localhost:3306)/GL?charset=utf8"); if err != nil { fmt.Printf("%s\n",err); return ; } rows, err := db.Query("select * from img_inf"); if err != nil { fmt.Printf("%s\n",err); return ; } if rows == nil { fmt.Printf("rows is nil!\n...阅读全文

博文 2015-06-17 23:07:23 juxuny

GoLang练习实例100之002----打印互不相同且重复数字的三位数

package main import ( "fmt" ) //题目:有四个数字:1、2、3、4,能组成多个互不相同且无重复数字的三位数?各是多少? func main() { num_S := []int{1, 2, 3, 4, 5} var num_Count int for i := range(num_S){ for y := range(num_S){ for z := range(num_S){ if (i!=z) && (i!=y) && (y!=z){ fmt.Println(i,y,z) num_Count ++ } } } } fmt.Println("总数为:", num_Count) ...阅读全文

博文 2018-03-20 00:33:04 不折腾难受斯基

Go如何实现枚举小实例分享

package handler const ( StatusDefaultError = 1 StatusAuthFaild = 600 StatusUnknowAction = 601 StatusPostArgsError = 602 StatusNotValidFile = 603 ) var statusText = map[int]string{ StatusDefaultError: "Unknow Error", StatusAuthFaild: "Authentication Failed!", StatusUnknowAction: "Unknow Action", StatusPostArgsError: "Post Args Error", StatusNotValid...阅读全文

博文 2016-02-24 20:00:00 fyxichen

Go's power is in emergent behavior

Go's power is in emergent behavior I just got back from Gophercon and had a great time. This was the first Go language conference ever. It was a single track of speakers and 700 people packed into a single ballroom in downtown Denver. Everyone said they felt like we were part of something special (but perhaps that's just the lack of oxygen talking ...阅读全文

博文 2015-06-17 20:12:43 hittata

golang 继承

package main import "fmt" type Base struct { Name string } func (b *Base) SetName(name string) { b.Name = name } func (b *Base) GetName() string { return b.Name } // 组合,实现继承 type Child struct { base Base // 这里保存的是Base类型 } // 重写GetName方法 func (c *Child) GetName() string { c.base.SetName("modify...") return c.base.GetName() } // 实现继承,但需要外部提供一个Base的实例...阅读全文

博文 2018-01-07 14:34:39 卢春风

GoLang练习实例100之005----把输入的5个数顺向和逆向输出

package main import ( "fmt" "sort" ) var( data [] int input_Data int /* 声明实际变量 */ ) //输入5个整数,请把这5个数分别由小到大和由小到大输出。 func main() { for i:=1;i<=5;i++{ fmt.Printf("输入第%s:",int(i)) fmt.Scanln(input_Data) data = append(data,input_Data) } sort.Ints(data) fmt.Println("小到大输出:",data) fmt.Println("大到小输出:",sort.Reverse(sort.IntSlice(data))) ...阅读全文

博文 2018-03-21 20:33:04 不折腾难受斯基