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

深入学习golang(1)—数组与切片

数据(array)与切片(slice) 数组声明: ArrayType = "[" ArrayLength "]" ElementType . 例如: var a [32] int var b [3][5] int 在Go和C中,数组的工作方式有几个重要的差别。在Go中, (1)数组是值类型。将一个数组赋值给另一个,会拷贝所有的元素。 (2) 如果你给函数传递一个数组,其将收到一个数组的拷贝,而不是它的指针。 (3)数组的大小是其类型的一部分,类型[10]int和[20]int是不同的。数组长度在声明后,就不可更改。 切片声明: SliceType = "[" "]" ElementType . 例如: var a []int 没有初始化的slice为nil。 切片(slice)对数组进行封...阅读全文

博文 2014-10-05 23:12:32 hustcat

Golang 开发移动应用的OpenGL(Android为例)的渲染管线

golang.org/x/mobile/gl 实现的是 OpenGL ES 2 的封装。 参考:https://godoc.org/golang.org/x/mobile/gl OpenGL ES(OpenGL for Embedded Systems)是OpenGL三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。OpenGL ES 1.0针对固定管线硬件的,OpenGL ES 2.0针对可编程管线硬件,可以认为完全是两套API。最新3.0版本也在Android4.3得到了支持,从源码上看完全扩展自2.0。 OpenGL负责把三维空间中的对象通过投影、光栅化转换为二维图像,然后呈现到屏幕上。 管线这个术语描述了OpenGL渲染的整个过程。openGL采用cs模型:c是cp...阅读全文

博文 2016-02-04 03:00:01 ghj1976

高效的多维空间点索引算法 — Geohash 和 Google S2

引子 每天我们晚上加班回家,可能都会用到滴滴或者共享单车。打开 app 会看到如下的界面: app 界面上会显示出自己附近一个范围内可用的出租车或者共享单车。假设地图上会显示以自己为圆心,5公里为半径,这个范围内的车。如何实现呢?最直观的想法就是去数据库里面查表,计算并查询车距离用户小于等于5公里的,筛选出来,把数据返回给客户端。 这种做法比较笨,一般也不会这么做。为什么呢?因为这种做法需要对整个表里面的每一项都计算一次相对距离。太耗时了。既然数据量太大,我们就需要分而治之。那么就会想到把地图分块。这样即使每一块里面的每条数据都计算一次相对距离,也比之前全表都计算一次要快很多。 我们也都知道,现在用的比较多的数据库 MySQL、PostgreSQL 都原生支持 B+ 树。这种数据结构能高效的...阅读全文

博文 2018-03-09 18:04:19 一缕殇流化隐半边冰霜

甜品店切蛋糕问题(动态规划,Go语言实现)

甜品店切蛋糕问题(动态规划,Go语言实现) 问题重现: 小Y最近在甜品店工作,其工作是切蛋糕。现在有n个顾客来购买蛋糕,并且每个顾客有一个到达的时间,以及需要买的蛋糕的长度ai。由于小Y每次只能服务一个顾客,【问题严谨性补充:而顾客如果进店没有服务员立刻为他服务,他将离开】所以对于相冲突的顾客没有办法提供服务。问小Y最多能为多少位顾客提供服务。小Y能够决定是否卖蛋糕给某个顾客。如果答应顾客要买长度为ai的切糕,那么小Y还要将蛋糕切成单位长度给顾客。如果对ai的蛋糕切成x和ai-x,所花的时间代价为x*(ai-x)。例如,当一个用户在1时刻,需要长度为4的蛋糕,此时小Y可以将其先切成2分长度为2的,花费为4,再将两段长度为2的分别切成1,1的,花费分别为1和1,则总花费时间为4+1+1 = 6...阅读全文

博文 2015-12-27 16:00:02 WAPWO

甜品店切蛋糕问题(动态规划,Go语言实现)

问题重现:小Y最近在甜品店工作,其工作是切蛋糕。现在有n个顾客来购买蛋糕,并且每个顾客有一个到达的时间,以及需要买的蛋糕的长度ai。由于小Y每次只能服务一个顾客,【问题严谨性补充:而顾客如果进店没有服务员立刻为他服务,他将离开】所以对于相冲突的顾客没有办法提供服务。问小Y最多能为多少位顾客提供服务。小Y能够决定是否卖蛋糕给某个顾客。如果答应顾客要买长度为ai的切糕,那么小Y还要将蛋糕切成单位长度给顾客。如果对ai的蛋糕切成x和ai-x,所花的时间代价为x*(ai-x)。例如,当一个用户在1时刻,需要长度为4的蛋糕,此时小Y可以将其先切成2分长度为2的,花费为4,再将两段长度为2的分别切成1,1的,花费分别为1和1,则总花费时间为4+1+1 = 6, 则小Y为该用户服务时间为6.已知第i位顾客...阅读全文

博文 2016-03-26 02:00:06 abv123456789

go中斐波切纳数列

package main import ( "fmt" // "time" ) func main() { fmt.Println(sum(5)) fmt.Println(amount(5)) } // 1+1+2+3+5 func sum(n int) int { if n == 1 || n == 2 { return 1 } return sum(n-1) + sum(n-2) } // 1+1+2+3+5 func amount(n int) int { if n == 1 || n == 2 { return 1 } a, b := 1, 1 for i := 3; i < n; i++ { a, b = b, a+b } return a + b } 第二种方法性能更好...阅读全文

博文 2016-11-14 05:00:01 Samete9011

12:golang struct 切片数组去重

type Fts_message_table_content_nomal struct { Docid int64 `xorm:"docid"` C0CreateTime int64 `xorm:"c0CreateTime"` C1MesLocalID int64 `xorm:"c1MesLocalID"` C2Message string `xorm:"c2Message"` C3reservedInt string `xorm:"c3reservedInt"` C4reservedText string `xorm:"c4reservedText"` C5usernameid int64 `xorm:"c5usernameid"` C6CONSTRAINT string `xorm:"c...阅读全文

博文 2020-03-17 23:32:47 陈玉涛

Golang --对切片进行元素唯一化处理

package Tools import "sort" //对[]string 类型的切片进行元素唯一化处理,返回来的元素已经排好序 func SetString(arr []string) []string { newArr := make([]string, 0) for i := 0; i < len(arr); i++ { repeat := false for j := i + 1; j < len(arr); j++ { if arr[i] == arr[j] { repeat = true } } if !repeat { newArr = append(newArr, arr[i]) } } sort.Strings(newArr) return (newArr) } //对...阅读全文

博文 2020-01-15 23:32:42 stardust_0000

2020-04-23

Golang实现切割文件 //4M const chunkSize int64 = 4 << 20 fmt.Println("请输入要切分的文件路劲") var filePath string fmt.Scanln(&filePath) fileInfo, err := os.Stat(filePath) if err != nil { fmt.Println(err) } //文件大小 除以要切分的文件大小 向上取整(就是要切分的份数) num := int(math.Ceil(float64(fileInfo.Size()) / float64(chunkSize))) fi, err := os.OpenFile(filePath, os.O_RDONLY, os.ModePerm) ...阅读全文

博文 2020-04-23 22:32:47 ax_bb