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

Go语言/golang/位操作/取反/异或/左移/右移

Go语言位操作实例 package main import ( "fmt" ) // 获取0-n之间的所有偶数 func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样 array = append(array, i) } } return array } // 互换两个变量的值 // 不需要使用第三个变量做中间变量 func swap(a, b int) (int, int) { a ^= b // 异或等于运算 b ^= a a ^= b return a, b } // 左移、右移运算 func shifting(a int) int { a = a << 1 ...阅读全文

博文 2014-10-04 19:27:13 viney

golang二进制bit位的常用操作

package main import ( "fmt" "github.com/imroc/biu" ) /** golang二进制bit位的常用操作,biu是一个转换二进制显示的库 mengdj@outlook.com */ func main() { var( /** 1个字节=8个二进制位,每种数据类型占用的字节数都不一样 注意位操作千万不要越界了,如某个类型占8个bit位,偏移时候不要超过这个范围 */ a uint8=30 ) //a输出结果:00011110 fmt.Println(biu.ToBinaryString(a)) /** 将某一位设置为1,例如设置第8位,从右向左数需要偏移7位,注意不要越界 1<<7=1000 0000 然后与a逻辑或|,偏移后的第8位为1,逻辑|...阅读全文

博文 2018-08-17 12:30:00 mengdejun

golang 位运算

http://blog.opskumu.com/golang-bitwise.html 位操作是程序设计中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算). 位操作符 一、简介 关于位运算的操作,维基百科关于 位操作符 的理论介绍已经非常清楚了。关于 Golang 的位运算其实和 C 语言比较类似,除了取反的操作和 C 语言有点区别,Golang 使用的是^x,而 C 使用的则是 ~x取反。 二、概念 << [ 左移 ] 1 << 2 == 4输出 0100 ,相比右移更常见,移位后空缺的部分全部填0 >> [ 右移 ] 10 >>...阅读全文

博文 2016-03-10 15:00:03 leonpengweicn

GoLang基础语法

变量定义 从hello world入手 package main import "fmt" func main() { fmt.Println("Hello World") } 控制台输出: Hello World 变量默认值 package main import "fmt" func main() { var a int var s string fmt.Println(a, s) } 控制台输出: 0 注:s为"",故打印出来没有效果 如果想让""字符串显示,则代码如下: package main import "fmt" func main() { var a int var s string fmt.Println(a, s) fmt.Printf("%d %q\n", a, s)...阅读全文

博文 2018-09-23 21:34:39 等她下班

常用位操作技巧(Golang)

1,判断奇偶 for i := 0; i < 100; i++ { if i % 2 == 0 { println(i) } if i & 0x1 == 0 { println(i) } } 2,交换两个数 func Swap(a, b *int) { if *a^*b != 0 { temp := *a *a = *b *b = temp } } func Swap(a, b *int) { if *a^*b != 0 { *a = *a + *b *b = *a - *b *a = *a - *b } } func Swap(a, b *int) { if *a^*b != 0 { *a ^= *b *b ^= *a *a ^= *b } } 3,交换符号 func ExcangeSym...阅读全文

博文 2014-11-14 08:00:01 xlplbo

golang 位操作

package main import ( "fmt" ) // 获取0-n之间的所有偶数 func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样 array = append(array, i) } } return array } // 互换两个变量的值 // 不需要使用第三个变量做中间变量 func swap(a, b int) (int, int) { a ^= b // 异或等于运算 b ^= a a ^= b return a, b } // 左移、右移运算 func shifting(a int) int { a = a << 1 a = a >> 1...阅读全文

博文 2014-12-20 19:00:01 moodlxs

Go 位运算

// xuhh_go_位运算符 project main.go /* 位移操作 << : 向左移位 可以看做是 乘以2的几次方 位移操作 >> : 向右移位 可以看做是 除以2的几次方 and操作 & : 都为1 才是1 or 操作 | : 只要有一个是1 那么就是1 取反 ^ :有一个为1 则 就是1 两个1 或者两个0 全是 0 标志位操作 &^ : a &^ b = (a^b) & b 其实就是清除标记位 (将a中为1的位 如果b中相同位置也为1,则将a中该位置修改为0,a中其他位不变) */ package main import ( . "fmt" ) func main() { var p = Person{"xuhh", "12"} Println(p) const a = 2...阅读全文

博文 2016-03-17 12:00:01 xuheazx

GO代码实现判断字符编码格式及编码格式转换(utf-8、gbk)

引入 最近使用go开发http服务,在使用http进行通信时,发现接收报文中如果包含中文字符(非utf-8编码),直接使用go将二进制格式数据转换成字符串文本会出现乱码的情况。因为golang中的字符编码格式是utf-8,如果是其他类型的编码,例如gbk,那么直接转码后出现乱码也就理所当然了。 GBK编码格式 为了更好地说明GBK的编码方式,首先在这里先说明一下ASCII码,GB2312, GBK, GB18030的兼容性关系: 各种编码兼容关系.png ASCII编码使用一个字节的低7位(范围0-127)来表示共128个字符,最高位为0,即 0XXX_XXXX GB2312为了能表示更多字符,使用单字节和双字节来进行编码,单个字节编码与ASCII完全一样,也就兼容了ASCII码,双字节编码...阅读全文

Go 的 rune byte 和 string

- `rune` 、 `byte` 和 `string` 都是 `Go` 的内置类型 ----- - `byte` - byte是`uint8`的别名,在所有方面都等同于`uint8` - 按惯例,它用于区分**字节值**和**8位无符号整数值**。 - `rune` - `rune`是`int32`的别名,在所有方面都等同于`int32` - 按惯例,它用于区分**字符值**和**整数值**。 - `string` - string是所有**8位字节字符串**的集合,通常但不一定代表UTF-8编码的文本 - 字符串可能为空,但是不能为 `nil` - 字符串类型的值是不可变的 - 由上面得解释我们大概可以明白 - `rune` 可以表示得比 `byte` 多 - `string` 类型的底...阅读全文

go 位图(bitmap)的实现

## 位图 [github地址](https://github.com/xiaomeng79/go-algorithm) https://github.com/xiaomeng79/go-algorithm ### 概念 在一个结构中,用一个比特位来描述一个数据的状态,这种结构就称为位图。位图实际上是哈希表的一种变形 ### 位图可以干什么 - 大数据滤重 - 数据排序 ### 为什么使用 - 节省内存 - 可以位操作,更快 ### 代码 ``` package bitmap import "fmt" //位图 type BitMap struct { bits []byte max int } //初始化一个BitMap //一个byte有8位,可代表8个数字,取余后加1为存放最大数所需的...阅读全文

博文 2019-03-01 12:22:53 xiaomeng

golang plugin热更新尝试

电视剧《萌妃驾到》即将和观众见面,剧中很多皇妃的扮演者颜值演技都在线,在电视剧《萌妃驾到》中曲碗碗扮演者尤其受关注,那么剧中曲碗碗扮演者是谁,还演过哪些电视剧? ======================================= 薇.信.关.注.工.众.号:戏说影院 点击影院入口→阅读原文→输入"片名"搜索→即可观看! ======================================= 该剧主要讲述了萌妃步萌与皇上温楼两人在一路“逗智逗勇”的过程中相恋的故事。 在宣布定档的同时,该剧还发布了定档海报,海报尽显独特“萌式美学”。《萌妃驾到》剧中女主步萌由90后人气小花旦金晨饰演,在已公布的定档海报中,步萌作为芳华宫主位,一身唐装俏皮又不失妩媚。而饰演男主温楼的全能偶像艺...阅读全文

go语言之bufio 打开文件,读取一行

package main import ( "fmt" "os" "bufio" "io" ) func main() { f, err := os.Open("c:\\aaa.txt")//打开文件 defer f.Close() //打开文件出错处理 if nil == err { buff := bufio.NewReader(f) //读入缓存 for { line, err := buff.ReadString('\n') //以'\n'为结束符读入一行 if err != nil || io.EOF == err { break } fmt.Print(line) //可以对一行进行处理 } } ...阅读全文

博文 2015-06-17 23:02:07 zistxym

go语言初记2(备忘)

看《Go入门指南》 ,这里讲得比较基础,针对go 1.0版,以下是一些我自己觉得特别和不容易理解的地方的摘抄! 上次有说到go里不同类型之间操作必须显示转换,int和uint不固定,所以int 不是int32 int 和 uint 在 32 位操作系统上,它们均使用 32 位(4 个字节),在 64 位操作系统上,它们均使用 64 位(8 个字节)。 package main func main() { var a int var b int32 a = 15 b = a + a // 编译错误 b = b + 5 // 因为 5 是常量,所以可以通过编译 } 格式化说明符(应该不止这些) 在格式化字符串里,%d 用于格式化整数(%x 和 %X 用于格式化 16 进制表示的数字),%g 用于...阅读全文

博文 2014-10-04 19:26:32 haanico

活动 | Contentos联合举办的链游“绿洲黑客松”大赛圆满结束

9月20日至22日,Contentos联合Binance Labs、Celer Network、Cocos-BCX共同举办的游戏绿洲黑客松大赛(Game Oasis Hackathon)活动圆满结束。来自全国50多名优秀的开发者,经过3天的激烈比拼,最终完成一个个兼具可玩性和游戏资产非同质化的区块链游戏,为区块链游戏的大规模成产和推广提供了可能。 基于Contentos公链开发的FAST游戏团队,凭借融合了跨链交易技术的牧场收获游戏FARMO得到了第三名的好成绩。FARMO将风靡一时的收菜游戏与跨链、不可替代通证等区块链元素结合,让所有的投入和产出都记录上链,依存于合约;独特的跨链交易技术,让玩家可以在三条链间自由选择,自由交易。 (图为FAST团队展示FARMO游戏) 该黑客松大赛采用“线...阅读全文

博文 2019-09-26 16:33:12 内容链Contentos

go语言的hashmap

go语言中map的数据结构,以下只摘取了关键的几个属性: struct Bucket { uint8 tophash[BUCKETSIZE]; // top 8 bits of hash of each entry (0 = empty) Bucket *overflow; // overflow bucket, if any byte data[1]; // BUCKETSIZE keys followed by BUCKETSIZE values }; struct Hmap { uint8 B; // log_2 of # of buckets (can hold up to LOAD * 2^B items) byte *buckets; // array of 2^B Bucket...阅读全文

博文 2015-05-18 03:00:01 richmonkey

整个大二的回顾

时间过得真快,转眼整个大二就过去了。我上一次来简书还是上学期结束的时候,随便几篇文章,就又回到 csdn 去了。今天偶然想到我的大二下学期结束了,来写一写我的这学期感想吧。 心路历程 我从大一下学期的暑假开始,从php接触到web后端放心。自学了大二这一年,自我感觉比平常人还是要努力一点。有努力就有收获,从大二上学期的懵懵懂懂到下学期的初步入门,从以前的 CURD 程序猿 现在也会分析系统架构,会根据系统需求,用合适的技术并且选择合适的语言(Golang、python、php)。当然毕竟只学了一年,还有很多我不会的。也深知和大厂的招聘要求还差的远,自己还是要努力努力再努力。 当然还有糟糕的变化,比如我保持了几年的体重,竟然开始增长了o(╥﹏╥)o,也顺利的加入到单身狗的群队中来了,父母的感情...阅读全文

博文 2018-07-27 15:34:59 帅气的浮生

Golang 1.9的主要更新

因网上这个资料难查,因此转载一份,原文请点击 Go1.9的主要更新 golang每半年更新一次版本,上次最新的版本是Go1.8,而Go1.9将在今年8月释出。Go1.9中语法的更改只有一个,那就是增加了类型别名,大部分更改是工具链,运行时,库的更改, 语法的更改 Go1.9中增加了类型别名这个语法,类型别名可以更优雅的实现当两个包之间struct的移动。类型别名的语法如下: type T1 = T2 意思是声明一个T2类型的别名T1. 工具 并行编译 在Go1.9中并行编译啊包是默认的设置,如果需要关闭并行编译,需要设置环境变量GO19CONCURRENTCOMPILATION=0。 ./…可以匹配vendor了 应各位亲们的要求,之前./...不支持匹配vendor目录下的文件,现在Go1...阅读全文

常用位操作技巧(Golang)

1,判断奇偶 for i := 0; i < 100; i++ { if i % 2 == 0 { println(i) } if i & 0x1 == 0 { println(i) } } 2,交换两个数 func Swap(a, b *int) { if *a^*b != 0 { temp := *a *a = *b *b = temp } } func Swap(a, b *int) { if *a^*b != 0 { *a = *a + *b *b = *a - *b *a = *a - *b } } func Swap(a, b *int) { if *a^*b != 0 { *a ^= *b *b ^= *a *a ^= *b } } 3,交换符号 func ExcangeSym...阅读全文

博文 2014-11-14 14:00:01 seago123

Go中的bit位和位运算符

一.二进制长什么样 bit比特是计算机的最小单元,是一个二进制位1或者0 t.Log("start") t.Logf("%b", 0) //0 t.Logf("%b", 1) //1 t.Logf("%b", 2) //10 t.Logf("%b", 3) //11 /* int是带符号的,表示范围是:-2147483648到2147483648,即-2^31到2^31次方。 uint则是不带符号的,表示范围是:2^32即0到4294967295。 */ var one uint one = 10000 t.Logf("%b", one) //10011100010000 13位,uint最多是32位 二.运算符 主要有下面几种运算符 & 位运算 AND | 位运算 OR ^ 位运算 XOR...阅读全文

请问go标准库里面有没有对一个uint32某几个bit更改或者移位的package?

最近要做一个小工具,对uint32的整数进行逻辑位操作,想请教大家一下,想实现下面的功能,有没有标准库的支持,省得自己再开发了。 (1)对某连续的几个bit进行赋值; (2)循环左移或者右移; (3)左移低位补零,或者右移高位补零。 麻烦各位专家指点一下! 谢谢...阅读全文

go语言中的if

var maptest = make(map[int]string) maptest[1] = "a" maptest[2] = "b" maptest[3] = "c" maptest[4] = "d" for key, value := range maptest { if key == 1 { fmt.Println(key) } else if key == 2 { fmt.Println(value) } else if key == 3 { fmt.Println(value) } else { fmt.Println(value) }//只有在else结束后if才会开始下一个 if key != 2 { fmt.Println(value) } }//当key=1时下面的语句只...阅读全文

博文 2014-10-04 19:26:46 SSSR

【转】 golang slice array

1. array 同一类型数据的集合 var arr [n]type //声明type类型一维数组 var arr [m][n]type //声明type类型二维数组 多维数组以此类推 也可以用 := 声明 arr := [n]type{元素1[,元素2, ...]} 其中n可以用 "..." 三个点表示,系统会根据元素个数来确定 下标只能为 int 类型,而 php 还支持 string 类型的下标 1.1 数组长度 len(arr) 注:数组长度在定义后就不可变 1.2 遍历: a. 循环通过过数组下标访问 arr[0] ~ arr[(len(arr))] b. range arr, 有两个返回值 第一个为数组下标,第二个为元素的值,与php遍历数组相似 [plain] view pla...阅读全文

博文 2015-06-08 03:00:00 freebird92

理解位运算及使用场景

最近在看APUE,函数umask的例子用到了位运算,认为这是个非常适合使用位运算的场景,有必要笔记一下。例子代码基于golang,因为最近在学习golang. 位运算 先来看下位运算的定义:程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。摘自百度百科 比如,&运算本来是一个逻辑运算符,但整数与整数之间也可以进行&运算。举个例子,6的二进制是110,11的二进制是1011,那么6 & 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理),下面的代码是用go实现的...阅读全文

博文 2017-03-06 05:47:00 kuuyee

go语言hello.go

前言 运行环境在ubuntu,按照官方网站说明简单安装,在这就不具体说明了,安装过错中没有任何错误。下面我就按照光放网站照这写一个hello.go。 代码如下: package main import "fmt" func main(){ fmt.Printf("你好,世界") } 运行命令: 6g hello.go 6l hello.6 ./6.out 输出结果:你好,世界 运行一下命令会生成64 位的exe程序: 6l -o hello.exe hello.6 生成的文件大小有1.1MB,在window 7 32 位下运行会报如下错误: Program too big to fit memory. 下面想办法在64位操作系统下生成32程序。 找了,好久没找到,不过,除了6g,还有gccg...阅读全文

博文 2014-10-04 19:26:39 zitsing

Go语言核心技术(卷一)之2.1-整数

第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数,浮点数,复数,每一种都包含了大小(size)不同的数值类型,例如有符号整数包含int8,int16,int32,int64,int。每一种数值类型都会决定值的大小和符号(正负),我们...阅读全文

博文 2016-03-16 15:00:05 abv123456789

6.Golang数字操作

Go 语言具有严格的静态类型限制,运算符操作的数字类型必须是相同类型数据。且数字操作不能超出该类型的取值范围,不然计算溢出得到的结果就是错的。 一、加减乘除、取模 package main import "fmt" func main() { // 加 + var ui1, ui2 uint8 ui1 = 1 ui2 = 2 ui := ui1 + ui2 fmt.Println(ui) // 输出:3 ui += 255 fmt.Println(ui) // 溢出后计算的值就是错的,输出:2 // 减 - var i, j int32 i = 10 j = 5 fmt.Println(i - j) // 输出:5 // 乘 * var f1, f2 float32 f1 = 1.2 f2 ...阅读全文

博文 2018-11-11 22:34:40 野尘lxw

在Golang中对MySQL进行操作

Golang官方并没有提供数据库驱动,但通过database/sql/driver包来提供了实现驱动的标准接口。可以在Github上找到很多开源的驱动。 其中go-sql-driver/mysql是一个比较推荐的驱动,其完全支持database/sql接口。 使用这个驱动, 在项目里import进: import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) 在正式使用database/sql包之前,首先得明白sql.DB并不代表一个数据库连接,它并不会与数据库建立任何连接,也不会验证参数的合法性,要想知道DSN的合法性,需使用sql.DB实例(比如db)db.Ping() 方法, 如下: err = db.Ping() if e...阅读全文

博文 2019-03-09 14:34:39 灯风罩戟

位运算详解

位运算 Bitwise operation 前言 日常提出疑问,然后引出今天的下文: 如何在代码里不用 “+” 、“-” 实现加减法的操作? 接下来我就介绍一项一招制敌的技能 —— 位运算 正文 什么是位运算 程序中的所有数在计算机内存中都是以二进制的形式存储的。位运算(Bitwise operation)就是直接对整数在内存中的二进制位进行操作,因此其执行效率非常高。 在程序中使用位运算进行操作,会大大提高程序的性能。 位运算的本质 位运算是在二进制之间操作,粗略地说就是 0 和 1 之间的转换 位运算的基本操作 与运算 & 两个位都是 1 时,结果才为 1 1 & 1 = 1 1 & 0 = 0 100 & 001 = 0 100 & 101 = 100 或运算 | 两个位都是 0 时,...阅读全文

博文 2019-12-11 15:32:58 曲镇

Go语言核心之美 2.1-整数

第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数,浮点数,复数,每一种都包含了大小(size)不同的数值类型,例如有符号整数包含int8,int16,int32,int64,int。每一种数值类型都会决定值的大小和符号(正负),我们...阅读全文

Go语言核心之美 2.1-整数

版权声明:本文为Sunface(孙飞)原创文章,转载请注明出处 https://blog.csdn.net/abv123456789/article/details/50902368 第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数...阅读全文

Go基础-012 练习题集合

1.老鼠试毒 10 只老鼠(小白鼠),1000 瓶水,其中一瓶有毒药,老鼠喝毒药水 1 个小时死掉。 要求利用 10 只老鼠,在 1 个小时内找出那瓶水有毒。 经典思路: 将 1000 瓶水从 1 至 1000 编号。 将10只老鼠从 1 至 10 编号。 将水瓶的编号转为 2 进制数据,至多有 1000 瓶水,至多需要 10 个位即可。 例如: 之后控制老鼠喝水,将老鼠的编号与水瓶编号二进制位对应。如果某瓶水的编号第一位为 1,则让 1 号老鼠喝水,第二位为 1 则让 2 号老鼠喝水,以此类推。 等 1 个小时后,看死掉的老鼠,将对应的老鼠编号位设置为 1,其他为 0,转成 10 进制, 就是对应水瓶编号。 例如 1,456910 号老鼠死了,那就意味着编号:1100111001,转成 1...阅读全文

博文 2020-02-24 01:32:44 LikePlayAPiano

关于使用go语言来进行cidr合并遇到一些问题,求帮助

就是根据一个开始IP地址和IP数然后将起始IP地址和掩码存入一个结构中,但是在根据IP数进行划分cidr的时候又一些问题。大多数的IP数都符合直接划分的规则,既直接imask := UintToIP(0xffffffff ^ uint32(num_ip-1))这样就能直接获得一个掩码,但是有部分IP数进行上述操作会导致直接处理的话掩码不是高位全1低位全0,需要额外进行划分处理,如num_ip=4627457,则掩码变为255.185.128.0, 要怎么对num_ip进行分段的处理才能使获得的掩码符合规则。。。...阅读全文

HelloWorld Go!

学习一门语言,总是先来一个HelloWorld,正如学习每一门乐器之初,先来一首妈妈的吻。 Go语言是通过Package来组织的,它自身只有25个关键字(比起其它的语言精简了好多吧),这些分别是:break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 差不多都是老相识,就不一一介绍了。 先来看看HelloWorld程序。 package main import ( "fmt" ) func main() { fmt.Println("Hello...阅读全文

博文 2015-06-17 23:08:18 lxhself

go语言的字符和字符串

Go语言中的字符 在Go语言中,没有字符类型,字符类型是rune类型,rune是int32的别称。 下面用一个简单的程序来演示字符类型: package main import ( "fmt" "reflect" ) func main() { r := '我' fmt.Printf("%q的类型为:%t 二进制为:%b\n", r, r, r) rType := reflect.TypeOf(r).Kind() fmt.Printf("r的实际类型为:%s\n", rType) } 程序输出: '我'的类型为:%!t(int32=25105) 二进制为:110001000010001 r的实际类型为:int32 那我产生一个问题:Unicode字符的长度是多少?这个问题的问法有没有问题?其...阅读全文

博文 2016-10-26 14:00:01 davidsu33

(go) 上传文件elipse专用

package main import ( "bufio" "io" "log" "os" "os/exec" "strings" "time" ) const ( filename = "c:\\myetc\\remote.etc" dotfilename = "c:\\myetc\\.filename" ) func main() { var servicefilepath string var serviceIP string var passwd string var serviceusername string var port string var spath string var sfilename string var splitstrings []string //打开之前...阅读全文

博文 2016-03-09 02:00:00 zistxym

go行读取文件

f, err := os.Open("test.txt") if err != nil { panic(err) } defer f.Close() rd := bufio.NewReader(f) for { line, err := rd.ReadString('\n') //以'\n'为结束符读入一行 if err != nil || io.EOF == err { break } fmt.Println(line) } $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

博文 2016-05-30 02:00:00 u010165367

(go) 上传文件ta3 专用(无多级目录)

package main import ( "bufio" "flag" "fmt" "io" "log" "os" "os/exec" "path/filepath" "strings" "time" ) const ( filename = "c:\\myetc\\remote.etc" ) func main() { var servicefilepath string var serviceIP string var passwd string var serviceusername string var port string //参数判断 if len(os.Args) == 1 { fmt.Printf("usage: %s filename1 filename2 ...\n"...阅读全文

博文 2016-04-04 00:00:15 zistxym

Go语言基础

1、变量声明 Go语言的变量声明方式与C和C++语言有明显的不同。Go语言引入了关键字var,并且Go语言把变量类型放在变量名之后;实例如下: 1)、声明一个变量 //定义一个类型为"int"的变量 var vName int //定义一个类型为"string"的变量 var vName2 string //定义一个类型为"int",且大小为10的数组变量 var vName3 [10]int //定义一个类型为"int"的数组切片 var vName4 []int //定义一个结构体变量 var vName5 struct{ vn int } //定义一个类型为"int"的指针变量 var vName6 *int //定义一个数据字典,key类型为"string",value类型为"int...阅读全文

博文 2016-02-18 16:00:01 dgh_84

Golang 实现访问Easyswoole的rpc服务

package main import ( "encoding/binary" "net" ) func main() { var tcpAddr *net.TCPAddr tcpAddr,_ = net.ResolveTCPAddr("tcp","127.0.0.1:9600") conn,_ := net.DialTCP("tcp",nil,tcpAddr) defer conn.Close() sendEasyswooleMsg(conn) } func sendEasyswooleMsg(conn *net.TCPConn) { var sendData []byte data := `{"command":1,"request":{"serviceName":"UserServic...阅读全文

博文 2019-10-08 11:33:39 aside section ._1OhGeD

1>Golang字符串常用操作

字符,字节 // 字符串 s := "hello 皇甫村" // 单独的字母,汉字,符号表示一个字符 c1 := 'h' c2 := '皇' // 字节。一个字节=8bit(8个二进制位) // 一个'A' =1一个字节 // 一个utf8编码的汉字 '砂' = 一般占用3个字节 1kb = 1024字节 字符串 package main import ( "fmt" "strings" ) // 字符串相关操作 var s3 = "C:\\Windows\\SoftwareDistribution\\Download" func main() { // 字符串长度 fmt.Println(len(s3)) // 字符串拼接 name := "理想" world := "dsb" fmt.P...阅读全文

博文 2020-01-28 21:32:42 三人行大道

[用Golang刷LeetCode之 1] 461. Hamming Distance

题目描述 https://leetcode.com/problems/hamming-distance/description/ The Hamming distance between two integers is the number of positions at which the corresponding bits are different. Given two integers x and y, calculate the Hamming distance. Note: 0 ≤ x, y< 2^31. Example: Input: x = 1, y = 4 Output: 2 Explanation: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ The abo...阅读全文

博文 2017-08-14 09:05:02 miltonsun

leetcode 回溯题目 golang语言

回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就 “回溯” 返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为 “回溯点”。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。 链接:https://leetcode-cn.com/tag/backtracking/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 本文主要总...阅读全文

博文 2019-09-19 00:33:15 努力的C

Golang 之 WaitGroup 源码解析

前言 如果我们有一个大的任务要做,我们会尝试将这个任务分解,分解完成之后并发交由 goroutine 去做,并且我需要当全部的任务完成之后再进行下面的步骤,在 sync 包下,就有这样一个东西适合上述情况,WaitGroup,今天我们来看看具体它是怎么实现的。 PS:在下面我统一用 wg 来简称 WaitGroup 使用 它的使用非常简单,如下: func main () { wg := sync.WaitGroup {} for i := 0; i < 10; i++ { wg.Add (1) go func (job int) { defer wg.Done () //do something fmt.Printf ("job % d done\n", job) }(i) } wg.Wa...阅读全文

博文 2020-05-26 09:32:46 LinkinStar

【go源码分析】strings.go 里的那些骚操作

go version go1.11 darwin/amd64/src/strings/strings.go strings.go 文件中定义了近40个常用的字符串操作函数(公共函数)。以下是主要的几个函数。 函数 简介 Index(s, substr string) int 返回 substr 在 s 中第一次出现的位置,不存在返回 -1;采用RabinKarp算法 Split(s, sep string) []string 根据 sep 把字符串 s 进行切分,返回切分后的数组 Join(a []string, sep string) string 跟 Split 功能刚好相反 Repeat(s string, count int) string 返回字符串 s 重复 count 次得到的...阅读全文

leetcode_1331

Golang: 思路:这题需要对数组进行排序,然后将数组内的元素的实际排位存进map里,然后对数组进行依次赋值 代码如下: func arrayRankTransform(arr []int) []int { if len(arr)==0{ return []int{} } if len(arr)==1 { return []int{1} } arr2:=make([]int,len(arr)) copy(arr2,arr) sort.Ints(arr2) mp:=make(map[int]int) temp:=1 for i:=1;i阅读全文

博文 2020-03-08 17:32:43 淳属虚构

Golang关闭需要结束的goroutine

package main import ( "fmt" "math/rand" "time" ) func main() { newRandStream := func(done <-chan interface{}) <-chan int { randStream := make(chan int) go func() { defer fmt.Println("randstream closeed, exited!") defer close(randStream) for { select { case randStream <- rand.Int(): case <-done: return } } }() return randStream } done := make(chan i...阅读全文

博文 2019-06-14 10:02:43 FredricZhu

GoLang基础语法

变量定义 从hello world入手 package main import "fmt" func main() { fmt.Println("Hello World") } 控制台输出: Hello World 变量默认值 package main import "fmt" func main() { var a int var s string fmt.Println(a, s) } 控制台输出: 0 注:s为"",故打印出来没有效果 如果想让""字符串显示,则代码如下: package main import "fmt" func main() { var a int var s string fmt.Println(a, s) fmt.Printf("%d %q\n", a, s)...阅读全文

博文 2018-09-25 11:34:56 等她下班

golang之panic,recover,defer

defer,recover: package main import ( "fmt" "time" ) func test() { defer func() { //defer中使用recover来捕获异常 //defer在函数执行结束最后,执行该方法 if err := recover(); err != nil { fmt.Println(err) } }() b := 0 a := 100 / b fmt.Println(a) return } func main() { for { test() time.Sleep(time.Second) } var a []int a = append(a, 10, 20, 383) a = append(a, a...) fmt.Printl...阅读全文

博文 2017-12-31 05:30:00 pyyu