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

Go语言 字符串

在所有编程语言中都涉及到大量的字符串操作,可见熟悉对字符串的操作是何等重要。 Go中的字符串和C#中的一样(java也是),字符串内容在初始化后不可修改。 需要注意的是在Go中字符串是有UTF-8编码的,请注意保存文件时将文件编码格式改成UTF-8(特别是在windows下)。 初始化 var str string //声明一个字符串 str = "laoYu" //赋值 ch :=str[0] //获取第一个字符 len :=len(str) //字符串的长度,len是内置函数 ,len=5 字符串操作 编码过程中避免不了中文字符,那我们该如何提取一个中文呢?首先我们要知道string[index]获取的是字符byte,就无法像C#中"老虞"[0]来取到‘老’,在Go中需要将字符串转换成r...阅读全文

博文 2014-10-30 03:00:01 ghgyj

golang -- 字符串操作

相关包有strings, strconv 判断是否以某字符串打头/结尾 strings.HasPrefix(s string, prefix string) bool => 对应python的str.startswith strings.HasSuffix(s string, suffix string) bool => 对应python的str.endswith 字符串分割 strings.Split(s string, sep string) []string => 对应python的str.split 返回子串索引 strings.Index(s string, sub string) int => 对应python的str.index strings.LastIndex 最后一个匹配...阅读全文

博文 2014-10-04 19:27:02 flyking

golang按显示长度截取字符串

根据显示长度截取字符串,之前php用的utf8编码,10个英文和10个汉字的显示长度差距太大,按字节截取的话又会出错出现截取半个汉字的情况,所以写了这两个函数. 这两天在折腾golang,所以就用golang重写了着连个函数.代码如下: package main import ( "fmt" ) func main() { fmt.Println(show_strlen("哈哈1")) fmt.Println(show_substr("哈哈1什1么的", 9)) } 根绝显示长度截取字符串 func show_substr(s string, l int) string { if len(s) <= l { return s } ss, sl, rl, rs := "", 0, 0, []r...阅读全文

博文 2014-10-05 00:00:01 DarkWingBoy

golang 判断字符串字母、数字、空白符、标点字符

包 unicode 包中一些常用函数(其中 v 代表字符): 判断是否为字母: unicode.IsLetter(v) 判断是否为十进制数字: unicode.IsDigit(v) 判断是否为数字: unicode.IsNumber(v) 判断是否为空白符号: unicode.IsSpace(v) 判断是否为Unicode标点字符 :unicode.IsPunct(v) 还有其他实用方法 推荐查看unicode包内方...阅读全文

博文 2019-08-29 11:32:49 howie_矜暮

golang package整理(strings)

/*package strings*/ //HasPrefix 判断字符串 s 是否以 prefix 开头 strings.HasPrefix(s, prefix string) bool //HasSuffix 判断字符串 s 是否以 suffix 结尾 strings.HasSuffix(s, suffix string) bool //Contains 判断字符串 s 是否包含 substr strings.Contains(s, substr string) bool //****判断子字符串或字符在父字符串中出现的位置(索引)***// //Index 返回字符串 str 在字符串 s 中的索引(str 的第一个字符的索引),-1 表示字符串 s 不包含字符串 str string...阅读全文

博文 2015-08-01 09:00:02 ivandong_qifan

golang 中打印函数问题

/** * Created with IntelliJ IDEA. * User: zhangjian * Date: 13-5-13 * Time: 下午1:51 * To change this template use File | Settings | File Templates. */ package main import "fmt" import "unsafe" func main() { a_int := []int{1,2,3,4,5} ai:=reverse(a_int) for aa := range ai{ //1.这个地方"%d "中%d后面一定要加空格,不然golang会认为是字符串%d,直接输出 //fmt.Printf这个函数要求()括号里面的必须是字符串...阅读全文

博文 2015-06-17 20:04:03 zj360202

Golang之字符串反转

package main import "fmt" func reverse(str string) string { var result string strLen := len(str) for i := 0; i < strLen; i++ { result = result + fmt.Sprintf("%c", str[strLen-i-1]) } return result } func reverse1(str string) string { var result []byte tmp := []byte(str) length := len(str) for i := 0; i < length; i++ { result = append(result, tmp[len...阅读全文

博文 2017-12-20 04:00:00 pyyu

Beego Redis 的使用问题

Beego 使用 Redis 存储字符串,Get 返回的是 interface{} 类型,必须要做这样的转换,请问有更好的方式吗? ``` bm, error := cache.NewCache("redis", `{"conn":"127.0.0.1:6379","key":"collectionName","dbNum":"0","password":""}`) if error != nil { fmt.Println("redis error:", error) } bm.Put("test", "hello", time.Second*100) v := bm.Get("test") fmt.Println("value:", string(v.([]byte))...阅读全文

Go语言中连接多个字符串

本文参考自How to efficiently concatenate strings in Go?和Efficient String Concatenation in Go。 (1)直接使用“+=”: package main import ( "fmt" "strconv" ) func main() { s := "" for i := 0; i <= 9; i++ { s += strconv.Itoa(i) } fmt.Println(s) } 因为字符串类型在Go中是不可改变的,因此每次操作实际都要新分配字符串,所以在字符串比较多的时候效率不高。 (2)使用strings.Join()函数: package main import ( "fmt" "strconv" "strin...阅读全文

博文 2017-06-25 14:12:05 肖楠

golang 字符串操作实例

package main import s "strings" import "fmt" var p = fmt.Println func main() { p("Contains: ", s.Contains("test", "es")) //是否包含 true p("Count: ", s.Count("test", "t")) //字符串出现字符的次数 2 p("HasPrefix: ", s.HasPrefix("test", "te")) //判断字符串首部 true p("HasSuffix: ", s.HasSuffix("test", "st")) //判断字符串结尾 true p("Index: ", s.Index("test", "e")) //查询字符串位置 1 p(...阅读全文

博文 2016-04-14 02:00:01 vipstone

golang各种字符串拼接性能对比

golang中字符串拼接方法 += fmt.sprintf append buffer.WriteString copy 废话不多说,直接上代码看效果 package main import ( "bytes" "fmt" "time" ) func main() { str:="chinese" city:="beijing" // 1. += s:=time.Now() for i:=0;i<100000;i++ { str +=city } e:=time.Since(s) fmt.Println("time cost 1:", e) // 2. fmt.Sprintf str="chinese" city="beijing" s=time.Now() for i:=0;i<10000...阅读全文

博文 2019-03-08 21:34:41 yushu1987

Golang加密解密

package common import ( "crypto/md5" "crypto/rand" "encoding/base64" "encoding/hex" "io" "strings" ) const ( //BASE64字符表,不要有重复 base64Table = "<>:;',./?~!@#$CDVWX%^&*ABYZabcghijklmnopqrstuvwxyz01EFGHIJKLMNOPQRSTU2345678(def)_+|{}[]9/" hashFunctionHeader = "zh.ife.iya" hashFunctionFooter = "09.O25.O20.78" ) /** * 对一个字符串进行MD5加密,不可解密 */ func GetMd5Stri...阅读全文

博文 2015-10-19 13:00:01 zhifeiya

关于 golang fmt.printf()输出格式化

package main import "fmt" import "os" type point struct { x, y int } func main() { //Go 为常规 Go 值的格式化设计提供了多种打印方式。例如,这里打印了 point 结构体的一个实例。 p := point{1, 2} fmt.Printf("%v\n", p) // {1 2} //如果值是一个结构体,%+v 的格式化输出内容将包括结构体的字段名。 fmt.Printf("%+v\n", p) // {x:1 y:2} //%#v 形式则输出这个值的 Go 语法表示。例如,值的运行源代码片段。 fmt.Printf("%#v\n", p) // main.point{x:1, y:2} //需要打印值的...阅读全文

博文 2018-08-29 12:30:01 i6010

golang深度拷贝map

最简单的方法是用json unmarshal,变成字符串,然后再用 json marshal生成新的map。这种方法对结构体也适用。 如果是map[string]interface{}和[]interface{}的组合,用代码递归也很简单: func DeepCopy(value interface{}) interface{} { if valueMap, ok := value.(map[string]interface{}); ok { newMap := make(map[string]interface{}) for k, v := range valueMap { newMap[k] = DeepCopy(v) } return newMap } else if valueSli...阅读全文

博文 2016-09-03 08:00:04 xtxy

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` 类型的底...阅读全文

正则表达式

匹配纯文本 Ben Hello, my name is Ben. Please visit my website at http://www.forta.com. 匹配任意字符(默认模式不匹配\n,单行模式可以匹配\n) a.c abc acc a2c.a.\.xls na1.xls na2.xls前面两个点任意字符 ,最后一个转义点, . 和 \ 等都叫做元字符(metacharacter),表示这个字符有特殊含义,而不是字符本身的含义,如果我们要匹配元字符的话,我们需要对元字符进行转义 [] 字符集,对应位置可以是字符集中的任意字符,字符集中的字符可以逐个列出,也可以给出范围,如[abc]或[a-c] ,第一个字符如果是^则表示取反,如[^abc];所有特殊字符在字符集中都失去原有的特殊...阅读全文

博文 2018-12-01 00:34:42 越塔打哭你

Golang(Go语言)代码技巧之字符串(string)

改变字符串中的某些字符 str := "hello roc"bytes := []byte(str)bytes[1] = 'a'str = string(bytes) //str == "hallo roc" 截取子串 substr := str[n:m] //截取从索引n到m-1的子串 遍历字符串 //for遍历,此方式只能遍历存放ASCII//编码的字符串,比如中文就不行for i := 0; i < len(str); i++ { //... = str[i]}//for-range遍历,此方式可以遍历Unicode//编码的字符串,不担心乱码for index, char := range str { fmt.Printf("%d %c\n",index,char)} 计算字符串长度...阅读全文

博文 2016-02-24 22:00:06 QQ245671051

求助,rsa加密问题

模拟登录百度已经获取公钥字符串 -----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDo5mHL8+BKHRJs26fMT2f8NtGS\n9XrpLIciE0iAZYmfYIZ0Sph9qN0WSjnrfT7osl0hPYEUedcbYLSINRGlv8WAzDHW\nPSMd39hs0sVET7AikE3EKByhyIqjy1V003GygGJwsfRLOCyWBmZ8SJnpYzebyRpV\nCac1DlPIiVut5FE4CwIDAQAB\n go语言如何利用上面字符串公钥加密密码呢?...阅读全文

《Go语言101》:一本在线Golang电子书

大致是从2016年7月开始打算写一本罗列各种Go编程中的细节的小册子。 但没想到在随后的两年半中,这本原计划中的小册子演变成了一本近500页专注于Go语言语法和语义的书。 原本的三个月的写作计划也拖成了两年半的一场马拉松。 真累了,另外也耽误了太多事儿。实在没有心力再准备排版和操心出版纸质书了。 有兴趣学习Go语言的,请点击以下链接: 本书官网(在线阅读版,有可能间歇性被墙) 本书github项目(可用来开启本地阅读版) 离线版下载(目前包括pdf和epub格式) 觉得此书对学习Go语言有帮助的,顺便赞赏和传播一下,以让老貘保持继续更新本书和go101.org网站的心力。 BTW,刚给本书搞了个公众号,主要用来发表一些关于Go语言细节、常识和编程技巧的快餐型的短小文章。 有兴趣的可以扫描下面...阅读全文

博文 2019-04-27 13:34:41 liulaomo

golang time的几种用法

首先说明golang 语言设计设有个叫 XXnuts的家伙,果然是个变态,把时间原点设计在了 2006-01-02 15:04:05 其实人家这个日期是有意义的: 2006-01-02T15:04:05Z07:00 每个数字的意义: 1 2 3 4 5 6 7 月 日 时 分 秒 年 时 区 常用的方法: 1 toTime格式化(Parsing): 用法一: 使用毫秒数 t := time.Unix(1362984425, 0) nt := t.Format("2006-01-02 15:04:05") fmt.Println(nt) 用法二: 使用固定的字符串进行格式化获得time 对象 const TimeFormat = "2006-01-02 15:04:05" func TestX...阅读全文

博文 2014-10-04 19:26:54 磊_子

字符串反转

字符串反转的Golang实现,应该是最简单的了。废话不多说,代码如下: package main func Reverse(s string) string { r := []rune(s) for i, j := 0, len(r)-1; i < j; i, j = i+1, j-1 { r[i], r[j] = r[j], r[i] } return string(r) } func main() { a := "Hello, 世界" println(a) println(Reverse(a)) } Golang本身支持计算字符串长度,并且由于支持多值赋值,交换值也是格外的简单。其他语言无非要单独处理一下这两个部分,通过遍历计算出字符串长度,再通过异或或者加法交换值。为了能够处理字符串里...阅读全文

博文 2017-02-09 12:25:13 Bryce

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

golang关于json库的一个比较容易陷入的坑 uint8[]数组的json转换问题. 2013-09-11 16:29 837人阅读 评论(0) 收藏 举报 原文来自:http://blog.csdn.net/spiritring/article/details/11570219 类似这个CA如果实例转化成json.List会变成字符串. [cpp] view plaincopy 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":"AQIDBAUGBwgJ...阅读全文

博文 2014-10-04 19:26:08 newsyoung1

golang类型转换

golang是强类型语言,在应用过程中类型转换基本都会用到。下面整理一下常用的类型转换,会持续更新。 整形转字符串 fmt.Println(strconv.Itoa(100)) 该方法的源码是: // Itoa is shorthand for FormatInt(i, 10). func Itoa(i int) string { return FormatInt(int64(i), 10) } 可以看出是FormatInt方法的简单实现。 字符串转整形 i, _ := strconv.Atoi("100") fmt.Println(i) 64位整形转字符串 var i int64 i = 0x100 fmt.Println(strconv.FormatInt(i, 10)) FormatI...阅读全文

博文 2015-10-14 13:53:14 陈杰斌

go语言json序列化与反序列化

package main import ( "encoding/json" "fmt" ) type Change struct { Mid int //菜单Id Actions []string //拥有的权限 "add" "view" "delete" "update" } type Change_slice struct { ChgArr []Change //一个角色对应的菜单以及权限 } func main() { //对象序列化为json字符串---------------------------------Begin var c1, c2 Change var msg Change_slice c1.Mid = 1 c1.Actions = []string{"view", "...阅读全文

博文 2015-06-17 23:02:08 zhifeiya

请教byte数组转换字符串问题

我写了段代码,希望的功能是读取html文件,然后将指定的字符串替换成一个新的字符串,但是在读取文件获得文本时碰到了一点问题,读取的文件明明是有数据的,但是在转换成字符串之后没有了,代码如下: ![enter image description here][1] 运行结果: ![enter image description here][2] 但是我把代码 content := string(bytes) 改成 content := string(bytes[:512]), 就能打印出读取的内容,是不是文本太大导致的? 如果是因为文本过大,大家怎么处理的呢? 望能指教! 我的版本信息: ![enter image description here][3]...阅读全文

GO中怎么处理URL编码?

比如我有一串字符串格式的URL,例如下边这样: %5B%7B%22ip%22%3A%22119.90.49.95%22%2C%22port%22%3A%228074%22%7D%2C%7B%22ip%22%3A%22119.90.49.110%22%2C%22port%22%3A%228050%22%7D%2C%7B%22ip%22%3A%22119.90.49.92%22%2C%22port%22%3A%228057%22%7D%2C%7B%22ip%22%3A%22119.90.49.104%22%2C%22port%22%3A%228016%22%7D%2C%7B%22ip%22%3A%22119.90.49.104%22%2C%22port%22%3A%228017%22%7D%2...阅读全文

golang实现set集合

package set import ( "bytes" "fmt" ) func main() { } type HashSet struct { m map[interface{}]bool } func NewHashSet() *HashSet { return &HashSet{m: make(map[interface{}]bool)} } //添加 true 添加成功 false 添加失败 func (set *HashSet) Add(e interface{}) (b bool) { if !set.m[e] { set.m[e] = true return true } return false } //删除 func (set *HashSet) Remove(e in...阅读全文

博文 2016-09-08 06:00:11 lt695981642

使用go连接mssql

使用go连接mssql还是比较方便,注意连接字符串要加上 encrypt=disable package main import _ "github.com/denisenkom/go-mssqldb" import "database/sql" import "log" import "fmt" import "flag" var debug = flag.Bool("debug", false, "enable debugging") var password = flag.String("password", "", "the database password") var port *int = flag.Int("port", 1433, "the database port") ...阅读全文

博文 2017-09-09 12:56:28 YiYou.Org

golang解析json报错:invalid character '\x00' after top-level value

golang解析json报错:invalid character '\x00' after top-level value 手动复制字符串:{"files":["c:/test/output/temp/file_export0000.out","c:/test/output/temp/file_export0001.out","c:/test/output/temp/file_export0002.out","c:/test/output/temp/file_export0003.out","c:/test/output/temp/file_export0004.out"]} 发现没有问题 原来是封装传出字符串的时候出问题了 *len = output.length() + 1; char*...阅读全文

博文 2017-11-30 16:00:00 zhishuai

golang string与[]byte互

string与[]byte经常需要互相转化,普通转化会发生底层数据的复制。如果是临时使用的字符串可以通过unsafe包直接转化数据,不需要内存拷贝 func BytesToStringFast(b []byte) string { return *(*string)(unsafe.Pointer(&b)) } func StringToBytes(s string) []byte { sh := (*reflect.StringHeader)(unsafe.Pointer(&s)) bh := reflect.SliceHeader{sh.Data, sh.Len, 0} return *(*[]byte)(unsafe.Pointer(&bh)) } 这种方法有需要注意的地方,使用转化后的...阅读全文

博文 2018-12-25 12:34:43 凯文不上班

关于Go语言daemon启动的方法.

昨天搞了个文件共享的小程序,遇见了意见蛋疼的事,就是启动之后终端不能关闭,不然程序也会随着关闭. 我的解决方法: nohup ./httpserver & nohup这个命令可以把程序放后台运行,顺便通过1>和2>把标准输出和标准错误重定向到文件,这样程序崩溃时才会有记录可查,这两者和程序的日志最好是分开,混在一起没办法判断轻重缓急: nohup ./server 1> server.out 2> server.err 进程启动时候记录下自己的pid: if pid := syscall.Getpid(); pid != 1 { ioutil.WriteFile("server.pid", []byte(strconv.Itoa(pid)), 0777) defer os.Remove("s...阅读全文

博文 2016-01-05 20:00:00 fyxichen

ionic 路由使用$state.go父页面向子页面传递参数

1.父页面的路由配置 .state('tab.article', { url: '/article', nativeTransitions: { type: "fade" }, views: { 'tab-article': { templateUrl: 'templates/article/article.html', controller: 'ArticleController' } } })2.子页面的路由配置 .state('tab.article_details', { url: '/article_details?articleDetailsUrl', views: { 'tab-article': { templateUrl: 'templates/article/articl...阅读全文

博文 2016-09-06 17:00:07 hunannanhu

Golang 统计字符串字数

比如新浪微博发微博的输入框有一个已输入字数的统计,它的规则推测是:汉字和中文标点算 1 个字数,英文和其他符号算 0.5 个字数。不足 1 个字算 1 个。大家可以去微博体验一下计算方式。​golang 可以使用正则和 unicode 包的方法判断。以下函数 GetStrLength 返回输入的字符串的字数,每个汉字和中文标点算 1 个字数,英文和其他字符算半个字数,不足 1 个字算 1 个。大家可以去微博体验一下。// GetStrLength 返回输入的字符串的字数,汉字和中文标点算 1 个字数,英文和其他字符 2 个算 1 个字数,不足 1 个算 1个 func GetStrLength(str string) float64 { var total float64 reg := re...阅读全文

博文 2018-05-09 11:14:03 nfwater

Go中字符串的遍历

首先说一下go中的字符串类型: 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。 Go语言的字符串的字节使用UTF-8编码标识Unicode文本,这样Golang统一使用UTF-8编码,中文乱码问题不会再困扰程序员。 字符串一旦赋值了,字符串就不能修改了:在Go中字符串是不可变的。 下面介绍字符串的三种遍历方式,根据实际情况选择即可。 常规遍历方式: var str = "Hello world!" for i := 0; i < len(str); i++ { fmt.Printf("str[%d]=%c\n", i, str[i]) } 运行结果: image 该遍历方式==缺点==:遍历...阅读全文

博文 2018-07-16 20:34:48 波涛澎湃

go反转字符串

Go反转字符串 似乎没什么好办法,string的话也得需要先转换成rune再反转再转成string package main import ( "fmt" ) func reverseString(s string) string { runes := []rune(s) for from, to := 0, len(runes)-1; from < to; from, to = from + 1, to - 1 { runes[from], runes[to] = runes[to], runes[from] } return string(runes) } func main(){ //testString := "abc" testString := "" ans := reverse...阅读全文

博文 2016-06-20 00:00:00 qq_15437667

golang package整理(strconv)

//package strconv //与字符串相关的类型转换都是通过 strconv 包实现的 //任何类型 T 转换为字符串总是成功的 //将字符串转换为其它类型 tp 并不总是可能的,可能会在运行时抛出错误 parsing "…": invalid argument //获取程序运行的操作系统平台下 int 类型所占的位数 strconv.IntSize //**********数字类型转换到字符串**/ //返回数字 i 所表示的字符串类型的十进制数 strconv.Itoa(i int) string //将 64 位浮点型的数字转换为字符串,其中 fmt 表示格式(其值可以是 'b'、'e'、'f' 或 'g'),prec 表示精度,bitSi// ze 则使用 32 表示 fl...阅读全文

博文 2015-08-01 09:00:02 ivandong_qifan

Go语言中有关字符串替换函数的介绍

```go func main() { //转换为字符串后追加到字节数组 slice := make([]byte, 1024) slice = strconv.AppendBool(slice, true) //第二个数为要追加的数,第三个数为指定10进制方式追加 slice = strconv.AppendInt(slice, 1234, 10) slice = strconv.AppendQuote(slice, "abcgohello") fmt.Println("slice = ", string(slice)) //其它类型转换为字符串 var str string str = strconv.FormatBool(false) fmt.Println("str = ", str...阅读全文

博文 2019-04-21 22:45:55 OctopusLian

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换

获取当前时间,类型是Go的时间类型Time (1) currentTime:=time.Now() // (2) t2:=time.Now().Month() //月 t3:=time.Now().Day() //日 t4:=time.Now().Hour() //小时 t5:=time.Now().Minute() //分钟 t6:=time.Now().Second() //秒 t7:=time.Now().Nanosecond() //纳秒 currentTimeData:=time.Date(t1,t2,t3,t4,t5,t6,t7,time.Local) //获取当前时间,返回当前时间Time fmt.Println(currentTime) //打印结果:2017-04-11 1...阅读全文

博文 2019-10-04 21:32:45 aside section ._1OhGeD

golang 格式化打印-utf-8编码规则

示例程序 func main() { var s byte = '?' fmt.Println(s) //63 //输出 2/8/10 进制格式 fmt.Printf("%b,%o,%d\n", s, s, s) // 111111,77,63 // 以16进制输出字符串 fmt.Printf("%x\n", "hex this") // 输出数值所表示的 Unicode 字符 fmt.Printf("%c\n", 63) //输出数值所表示的 Unicode 字符(带单引号)。对于无法显示的字符,将输出其转义字符。 fmt.Printf("%q\n", 63) //输出 Unicode 码点(例如 U+1234,等同于字符串 "U+%04X" 的显示结果) fmt.Printf("%U\n...阅读全文

博文 2019-01-11 21:34:43 豆瓣奶茶

golang UTF8转中文字符

golang 读取文件的时候(ReadFile func(filename string) ([]byte, error)),返回的是utf-8格式的[]byte,对于中文字符来讲,无法将[]byte直接转化为string。所以需要手动将UIF-8转换成GBK。 GitHub上的项目https://github.com/axgle/mahonia 可以解决编码转换的问题。 file, err := ioutil.ReadFile("./data/pretext.txt") enc := mahonia.NewDecoder("gbk") str= enc.ConvertString(string(file)) fmt.Println(file) fmt.Println(str) [180 2...阅读全文

博文 2018-11-29 18:34:41 jkezhang

golang 字符串拼接几种方式

package main import ( "bytes" "fmt" "strings" ) func main() { // 字符串拼接1 s1 := fmt.Sprintf("%s:%d", "127.0.0.1", 8080) fmt.Println(s1) // 字符串拼接2 s2 := strings.Join([]string{"hello", "world"}, "") fmt.Println(s2) // 字符串拼接3 s3 := bytes.Buffer{} s3.WriteString("hello") s3.WriteString("world") fmt.Println(s3.String()) // 字符串拼接4 s4 := "hello" + "world" f...阅读全文

博文 2019-12-09 13:32:47 就超棒

整理下Base64相关的东西(OpenSSL/GO...)

Base64在不同语言对接时,其实是有些小坑的,之前有碰过。 首先Base64的是啥? 阮一峰有一篇写得很赞的文章说得很明白。 然后是怎么编码? 我用OpenSSL写了个Base64解编码实现: /* 用openssl来做Base64加解密. Author: xcl Date:2015-9-17 */ #include #include #include #include "openssl/ssl.h" #include #include #if defined(WIN32) || defined(_WIN64) #pragma comment(lib, "libeay...阅读全文

博文 2015-10-24 13:00:05 xcltapestry

go 字符串转换的一些总结

str := "hello世界" 1. sli := []rune(str) []rune 是go内建的函数,会将字符串按utf8编码转换为{h,e,l,l,o,世,界}对应的数字{104,101,108,108,111,19990,30028}2. byt := []byte(str) []byte 是go内建函数,会将str转换为byte切片{104,101,108,108,111,228,184,150,231,149,140}3. for _,c := range str{ println(c) }4. len(str) 返回 11 len返回字符串byte长度5. go 中的字符可以是 ASCII/中文 .. s := '你'6. string(sli)/string(byt) 都...阅读全文

博文 2015-06-18 09:02:16 m718281962

Go语言无法读取需要密码访问的PEM文件问题(failed to parse private key)

文来自:http://blog.csdn.net/hekejun19861107/article/details/22897429 最近开始做苹果的推送功能,服务端连接apns的时候需要加密连接,对应就需要通过苹果开发者平台生成对应的pns的证书和对应的私钥,然后通过openssl命令转换成PEM格式,本人也是急于完成手头的工作,没有去深入研究openssl命令的使用方法,按网上的教程直接把p12 的私钥转成了pem,对应还上了密码。这时候问题就来了,Go提供的tls库中的LoadX509KeyPair并没有传入密码的选项,只能传入对应的证书和私钥。琢磨半天找到这方法,记录一下: golang 不支持p12解析,所以需要转换成pem 网上有一些,但都不能实现自动转换(非交互模式)。以下是非交...阅读全文

博文 2016-02-05 02:00:01 newsyoung1

Go的AES加密的默认工作模式的吗?

如果是的话 这段Node.js加密 var cipher = crypto.createCipher('aes-128-ecb', key); var encrypted = ""; encrypted += cipher.update(plaintext, 'binary', 'base64'); 应该是转换成下面的Go代码 block, err := aes.NewCipher(key) if err != nil { return nil, err } blockSize := block.BlockSize() origData = PKCS5Padding(origData, blockSize) // origData...阅读全文

golang net/url包使用

1.net/url简介 import "net/url" url包解析URL并实现查询转义 URL结构体 // Note that the Path field is stored in decoded form: /%47%6f%2f becomes /Go/. // A consequence is that it is impossible to tell which slashes in the Path were // slashes in the raw URL and which were %2f. This distinction is rarely important, // but when it is, code must not use Path directly. ...阅读全文

博文 2019-05-22 19:34:41 Jeason_zhao