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

Golang复制结构体

Golang中复制结构体,可以使用赋值语句 package main import ( "fmt" ) type Dog struct { age int name string } func main() { roger := Dog{5, "Roger"} mydog := roger fmt.Printf("roger addr %p\n", &roger) fmt.Printf("mydog addr %p\n", &mydog) fmt.Println("Roger and mydog are equal structs?", roger == mydog) mydog.name = "piggie" fmt.Println("Roger and mydog are equal s...阅读全文

博文 2019-10-01 14:32:49 aside section ._1OhGeD

我们为什么选择Golang重构Worker系统

故事的起因在这里。 之前发了一篇帖子,讲了暴漫用golang重构了worker系统,有好多朋友问到语言选择的问题。 其实在用Golang重写我们的worker系统之前是做过很多调研的。 真正让我们下定决心的是 Parse的一篇文章:How We Moved Our API From Ruby to Go and Saved Our Sanity。 文中讲了Facebook的Parse团队为什么选择Golang代替Ruby。 我翻译下关键几点: Parse面临的问题 Parse跟暴漫的技术栈比较相似: 服务器Unicorn,部署使用Capistrano。在高流量面前很多问题都被指数级放大,在每次部署的时候 app server重启都要很长时间。并且Unicorn的重启并不是真正的‘gracef...阅读全文

博文 2015-09-09 19:54:01 长洪

go arm、android版本

export GOROOT="$home/src/go"#go 源码存放位置 export GOBIN="$GOROOT/bin"#go、gofmt、godoc工具位置 export PATH="$GOBIN:$PATH"# #开始编译,arm架构,linux系统 cd $GOROOT/src export GOOS=linux#适应的OS export GOARCH=arm#目标架构 ./all.bash #host comply cd $GOROOT/src ./all.bash cat > hello.go <阅读全文

博文 2014-10-04 19:25:56 qioixiy

cgo 随笔(golang)

结构体应用 //结构体定义如下 // test.h struct test { int a; int b; int c; } 在golang中的调用如下: 1 package name 2 3 4 import "C" //这个是必须要包含的,如果要调用cgo 5 6 // #cgo linux CFLAGS: -l. //这个是声明查找头文件的位置 是在本目录 7 // #include "test.h" 8 9 10 func testt() { 11 var vt C.struct_test //这个是结构体的调用方法 12 .... 13 ..... 14 } 15 16 17 1...阅读全文

博文 2014-10-04 19:25:56 sn-dnv-aps

[go语言]避免过度重构

golang-nuts上有人提了一个问题[1],询问怎么样把减少两个类似数据结构和算法的重复代码。简而言之,有两个struct:QuickFindSet和QuickUnionSet,它们各有Count, IsConnected, Find, Union等方法。他发现这两个struct的一些函数的实现是一样的,因此他希望能消除这些重复代码。 ? www.usr.cc 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 04...阅读全文

博文 2014-10-04 19:26:29 deansinaean

Destructuring assignment(解构赋值)in ES6

ES6允许按照一定模式,从数组和对象(以及字符串、数值、布尔值、函数参数等)中提取值,按照对应位置给变量进行赋值,这被称为解构赋值。首先,假定你已经了解了什么是解构赋值,我们先来快速看一下它的常见用途。 交换变量的值 let x=1,y=2; [x,y]=[y,x]; 与传统的引入中间变量进行值交换的方式相比,这种写法不仅简洁,而且易读,语义非常清晰 解析函数多返回值 JS中函数只能返回一个值,如果要返回多个值,只能将它们放在数组或对象里返回,通过解构赋值,我们可以很方便的将这些值取出来并赋给其它变量。 //返回一个数组 function arr(){ return [1,2,3]; } let [x,y,z]=arr(); //返回一个对象 function obj(){ return {...阅读全文

博文 2017-08-03 08:05:05 弧度里的微笑

[go语言]避免过度重构

golang-nuts上有人提了一个问题[1],询问怎么样把减少两个类似数据结构和算法的重复代码。简而言之,有两个struct:QuickFindSet和QuickUnionSet,它们各有Count, IsConnected, Find, Union等方法。他发现这两个struct的一些函数的实现是一样的,因此他希望能消除这些重复代码。 // quick-find type QuickFindSet struct { numOfComponents uint items []uint } func NewSet(n uint) QuickFindSet { set := QuickFindSet{ numOfComponents: n, items: make([]uint, n) } f...阅读全文

博文 2014-10-30 18:07:21 stevewang

开源 PaaS 平台 Tsuru

Tsuru 是一个开放源码的 open Platform-as-a-Service (PaaS)平台。 Tsuru 可以让你构建自己的 PaaS 服务。Tsuru 采用 go 语言写成,依赖 go 环境和 libxml。 在 Tsuru 的 PaaS 服务下,你可以选择自己的编程语言,选择使用 SQL 或者 NoSQL 数据库,memcache、redis、等等许多服务,甚至与你可以使用 Git 版本控制工具来上传你应用...阅读全文

开源项目 2012-12-24 16:00:00 tsuru

S.O.L.I.D 原则在 Go 中的应用

本文作者: 伯乐在线 - yemengying 。未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者。前言 由于自己最近灵感枯竭,所以我决定翻译一篇别人的文章 O(∩_∩)O~。作为一个一直想学 Go,但想了好久还没入门的人,我挑了篇写 Go 的文章,顺便帮自己熟悉一下 Go。原文是 Dave Cheney 根据自己 GolangUK 的演讲所整理的,全文以 SOLID 原则为线路,讲述了什么样的 Go 代码才算是好代码,当然 SOLID 原则也适用于其他语言。 英文原文比较长,由我和 Kevin 合译。 世界上有多少个 Go 语言开发者? 介个世界上有多少 Go 开发者捏?在脑海中想一个数字,我们会在最后回到这个话题。 Code review 有多少人将 code review 当做自己工...阅读全文

博文 2017-02-10 16:28:49 伯乐在线

Golang调用C代码

一、直接写在GO文件中 package main /* #include void demo(){ printf("HELLO WORLD! \n"); } */ import "C" func main() { C.demo() } 构建方式 go build go build main.go 注: 这种方式只适合代码量特别小的场景 二、写在独立文件中但必须跟main.go文件同一目录 目录结构 . ├── README.md ├── demo.c ├── demo.h └── main.go main.go package main // #include "demo.h" import "C" func main() { C.demo() } demo.h #ifn...阅读全文

博文 2020-04-29 00:34:27 gsp412

Go 中的一些问题

go 语言中的分段栈和连续栈 go并发模式管道和取消,主要讲解channel,非常好,首先会好好地研究一下 go tips在做什么 go 中的package ‘os’ go 中的 package ‘syscall’ 计算机软件中,只有读真正的代码,才会得到真正的理解,否则是永远不会理解的。看书就看经典书,看代码就看经典的代码, 写代码就要重构,就要不停地检查,这样子才是永恒的进步之道。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

博文 2016-04-18 20:00:06 xiaorenwuzyh

golang 不定参数列表

package main import "fmt" func func1(a, b int) (result int) { /* 输入两个参数,返回两个参数相加的结果 */ result = a + b return } // 不定参数列表 func func2(args ...int){ //js 解构 for _, data := range args{ fmt.Println(data) } } func main() { //result := func1(333, 333) //fmt.Printf("result = %d\n", result) //func2(1,2,3,4,5,6,) func2() ...阅读全文

博文 2020-04-05 02:32:43 小麦客

重构这件小事

服务端的技术重构,对于很多开发人员来说并不陌生。这里,我们称大的技改叫做重构。自加入我站以来,也是主导或经历过比较大的技术重构,简单说有两类: 从php到golang的重构 两年累积的golang代码的重构 其实重构的动机无非就这么两类 语言栈的迁移或统一 算是重写了 因业务发展,老的架构不满足了,包括稳定性、性能上的、扩展性上的等等 那么,到底我们的项目,是否需要重构了呢? 重构本身属于技改,一般情况下产品和老板不一定是非常关心的,甚至有时候是“反对”的。短期来看,重构对业务迭代速度的影响、重构中或者重构后系统的稳定性也未知。那么,我们要不要重构呢? 我们要会算账!重构的收益是什么?成本是什么?风险是什么?想清楚这3个问题再决定! * 收益能否量化!比如性能数据提升多少?耗时的减少是直接改...阅读全文

博文 2019-04-28 01:34:41 imnx

golang构造函数

package main import "fmt" /** * 构造函数 * 上班类 */ type Work struct { opts options } type options struct { startTime string lunchTime string endTime string } var ( lunTimeDefault = "中午十二点" ) type Option func(o *options) func StartTime(s string) Option { return func(opts *options) { opts.startTime = s } } func EndTime(s string) Option { return func(opts ...阅读全文

博文 2019-12-21 01:32:41 Cazy

Go重构Java数据加密方法(AES/ECB/PKCS7,AES/CBC加密)

最近和合作厂商对接的时候,数据需要加密传输,响应数据需要再解密获取,由于我司使用的是Golang,而合作商使用的是Java,所以加密方法需要重构. 直接上代码(utils.go) package libs import ( "bytes" "crypto/aes" "crypto/cipher" "crypto/hmac" "crypto/md5" "crypto/sha256" "encoding/hex" "errors" "fmt" "sort" "strings" ) // 签名加密 func Sign(sysParam map[string]string, busParam string, method string, key string) (string, error) { i...阅读全文

博文 2019-02-13 14:34:46 imsgy

Go结构体内嵌模拟类的继承

package main import "fmt" // 可飞行的 type Flying struct{} func (f *Flying) Fly() { fmt.Println("can fly") } // 可行走的 type Walkable struct{} func (f *Walkable) Walk() { fmt.Println("can walk") } // 人类 type Human struct { Walkable // 人类能行走 } // 鸟类 type Bird struct { Walkable // 鸟类能行走 Flying // 鸟类能飞行 } func main() { // 实例化鸟类 b := new(Bird) fmt.Println("Bi...阅读全文

博文 2019-12-24 17:33:13 huang_he_87

golang生成无限树

概要 定义无限结构体.使用指针方式 List []*TreeNode,见1处代码 构建parent_id为key的map结构. 构建树的结构. 源代码 package main import ( "encoding/json" "fmt" ) // 1处 type TreeNode struct { Id int `json:"id"` PID int `json:"pid"` Name string `json:"name"` List []*TreeNode `json:"list,omitempty"` // omitempty 表示如果空的话,则忽略. } func main() { test := `[{"id":1,"pid":0,"name":"a"},{"id":2,"pid...阅读全文

博文 2020-04-09 18:32:53 百里江山

golang构造函数

package main import "fmt" /** * 构造函数 * 上班类 */ type Work struct { opts options } type options struct { startTime string lunchTime string endTime string } var ( lunTimeDefault = "中午十二点" ) type Option func(o *options) func StartTime(s string) Option { return func(opts *options) { opts.startTime = s } } func EndTime(s string) Option { return func(opts ...阅读全文

博文 2019-12-21 06:32:45 charley_z

【数据结构原理与应用(Golang描述)】② 链表

_ _ _ _ _ _ _ | (_) | | | | | (_) | | | |_ _ __ | | _____ __| | | |_ ___| |_ | | | '_ \| |/ / _ \/ _` | | | / __| __| | | | | | | < __/ (_| | | | \__ \ |_ |_|_|_| |_|_|\_\___|\__,_| |_|_|___/\__| 1.1 原理 链表与数组都非常基础也非常常用,从底层数据结构上看,数组需要一块连续的内存空间来存储数据,而链表则不需要,链表通过指针将一组零散的内存块串联起来使用。 日常中有三种常见的链表结构: 单向链表 双向链表 循环链表 1.2 分析 对于单链表来说,插入和删除操作的时间复杂度为 $O(1)$。双向链表...阅读全文

博文 2020-02-07 13:32:39 vouv

Eosforce开发周报 21-jan 2019

工作1. FORCE IBC解决方案中继链BP模式中继合约完成基本合约框架。2. FORCEIO添加bus插件。3. FORCE IBC解决方案中继链实现映射Token合约。4. FORCE IBC解决方案中继链设计Token互换合约实现方案。5. FORCEIO重构账户名实现, 支持定制账户名格式。6. FORCEIO重构系统合约账户初始化实现。7. goeosforce库支持FORCEIO。8. 钱包完善FORCEIO支持。下一周工作1. FORCE IBC解决方案中继链BP模式中继合约开发。2. FORCEIO完成基本的跨链Token映射过程。3. FORCE IBC解决方案中继链实现基本的Token互换合约。4. 实现一个简单的FORCEIO golang客户端链接库。EOSForc...阅读全文

博文 2019-01-25 22:34:43 苏博明

Golang学习笔记-结构体

定义结构体的格式如下: type struct_variable_type struct { member definition; member definition; ... member definition; } type Book struct { id int name string author string } 初始化结构体的格式如下,使用key-value的形式初始化时忽略的字段为零值。 structure_variable_type {value1, value2...valuen} structure_variable_type { key1: value1, key2: value2..., keyn: valuen} func main() { fmt.Println...阅读全文

博文 2019-09-27 23:32:45 aside section ._1OhGeD

golang 结构体

//结构体 package main import "fmt" // 用 type 关键字定义一个结构体 type person struct { name string age int } func main() { //实例化一个结构体 // 第一种情况 p1 := person{} p1.name = "小麦客" p1.age = 666 fmt.Println(p1.name) fmt.Println(p1.age) // 第二种情况 p2 := person{ name:"小麦客", age:666, } // %#v 打印详细信息 fmt.Printf("%#v\n", p2) } 结构体_结构体指针.pn...阅读全文

博文 2020-04-08 07:32:49 小麦客

leetcode_739

Golang: 思路:栈结构可以很好的解决这个问题,用栈来记录一个递增的序列,栈内的元素为对应的元素下标即可。 代码如下: func dailyTemperatures(T []int) []int { res:=make([]int,len(T)) var stack []int i:=len(T)-1 for i>=0{ if len(stack)==0{ stack=append(stack,i) }else{ for true{ if len(stack)!=0&&T[i]>=T[stack[len(stack)-1]] { stack=stack[:len(stack)-1] }else{ if len(stack)!=0 { res[i]=stack[len(stack)-1]-...阅读全文

博文 2020-03-11 13:33:09 淳属虚构

leetcode_409

Golang: 思路:这题属于简单题,思考上存在一点难度,最长回文串构建就是把所有成对的字母全部集中到一起,如果还有多余的字母,取一个即可。 代码如下: func longestPalindrome(s string) int { if len(s)<=1 { return len(s) } temp:=make([]int,52) for _,v:=range s{ if v>=97 { temp[v-97]++ }else{ temp[v-39]++ } } f,sum:=0,0 for i:=0; i< len(temp); i++ { sum=sum+temp[i] if f==0 { if temp[i]%2!=0 { f=1 } }else{ if temp[i]%2!=0 { ...阅读全文

博文 2020-03-20 21:32:45 淳属虚构