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

golang 如何解析含有转义字符的字符串,为标准格式的json字符

``` 获取到是[]byte数据,我通过string([]byte数据)转化为string后是带有转义的json字符串, 我改如何将里面的Unicode输出为中文,转化为标准的json字符串???搞了一个晚上了,完全没有头绪 如下: ``` ``` {"msg":"\u8be5\u5355\u53f7\u6682\u65e0\u7269\u6d41\u8fdb\u5c55\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\uff0c\u6216\u68c0\u67e5\u516c\u53f8\u548c\u5355\u53f7\u662f\u5426\u6709\u8bef\u3002","status":"-3","error_code":"13","...阅读全文

golang将结构体转换成json,json转换成结构体

1、将结构体转换成json需要用到marshl函数(或者marshlIndent()函数)。 区别:marshl函数没有将json格式化输出,输出是一个json的字符串。----不利于直接查看json的结构。maeshldent函数 可以将json格式化输出,可阅读性提高了。 2、将json字符串转换成结构体需要用到marshl()函数。 实例如下: ```go package main import ( "log" "encoding/json" "fmt" ) type Movie struct{ Title string Year int `json:"released"` Color bool `json:"color, omitempty"` Actors []string } f...阅读全文

博文 2018-08-23 19:08:58 yuluxs

【Golang】time的时区问题

先上代码 package main import ( "fmt" "time" ) var ( layout string = "2006-01-02 15:04:05" startTime string = "2020-03-25 17:00:00" endTime string = "2020-03-25 19:00:00" ) func main() { start, _ := time.Parse(layout, startTime) fmt.Printf("initTime is %v\n", start) //initTime is 2020-03-25 17:00:00 +0000 UTC end, _ := time.Parse(layout, endTime) fmt.Pr...阅读全文

博文 2020-03-26 17:33:09 冉小妹Ran

golang开发modbus-rtu通信

用到的gomodbus包是坛友slzm40编写和共享的,感谢他的无私分享,本帖只是抛砖引玉,将我自己学习的一些经历分享给大家;有关modbus包可以直接向slzm40请教或一起讨论;1、创建工程,导入modbus包包地址"github.com/thinkgos/gomodbus";2、打开虚拟串口添加一对虚拟串口 图2.1 3、打开modbus-slave软件打开modbus-slave从机软件,用来测试从机;需要注意设置通信地址和读取寄存器的地址和数量; 图3.1 4、运行代码查看可用串口,因为虚拟串口选择com1和com2,虚拟中我选择使用/dev/ttyS1 图4.1 编译运行,会提示串口打开失败,这是因为linux对设备的权限做了限制 图4.2 获取串口读写、运行等权限 图4.3 5...阅读全文

博文 2020-03-05 03:32:45 王鹏_7ebe

golang template模版如何判断变量是否存在/指针是否为空

golang template模版如何判断变量是否存在/指针是否为空 也就是语法{{if .Var}}的含义。 其含义是变量Var是否为真值,判断逻辑根据变量的类型,和golang语言本身判断变量是否为真的逻辑是一样的。 数字型:值不等于零 字符串:不是空串 指针类型:不为空 布尔类型:为True值 比较常用的是指针类型是否为空(对于其他基本类型来说,可以通过简单的比较运算来完成),语义上说就是属性是否存在,举个例子来说: package main import ( "os" "log" "text/template" ) type Address struct { City string Street string Apt int } func main() { templateText ...阅读全文

博文 2020-01-06 05:32:43 CodingCode

Golang strings.Split获取字符串中的url/域名的简易方法

package main import ( "fmt" "strings" ) func main() { fmt.Println("Hello World!") a := "golang strings.Split获取字符串中的url/域名的简易方法http://www.waylau.com/golang-strings-split-get-url/" a1 := strings.Split(a, "//")[1] a2 := strings.Split(a1, "/")[0] fmt.Println(a1) //输出为:www.waylau.com/golang-strings-split-get-url/ fmt.Println(a2) //输出为:www.waylau.com ...阅读全文

博文 2017-02-10 13:51:14 waylau

json字符串经过json.Unmarshal与json.Marshal出来字符串与最初的字符串顺序不一致问题

``` func main() { src := `{"iss":"magic-ios-1.0.0","iat":1487000471,"jti":"4861ed10","rbd":"dbac2c5f","uri":"/auth/hello","ttu":""}` var params interface{} err := json.Unmarshal([]byte(src), ¶ms) if err != nil { fmt.Printf("%v\n", err) return } p, _ := json.Marshal(params) fmt.Printf("%v, %s\n", params, p) } ``` 问题描述: ...阅读全文

Golang字符串遍历

Golang字符串遍历 package main import ( "fmt" ) func main() { v4 :=' 床前明月光, 疑似地上霜. 举着望明月, 低头思故乡. ` v6 := []rune(v4) v7 := "故" for k, v := range v6 { if string(v) == v7{ fmt.Printf("找到字符---\"%s\",\n其索引为%d\n",v7,k) fmt.Printf("%d--%c--%T\n", k, v, v) } } } 将字符串先转换为[]rune即[]int32,然后再一个个遍历, 这样才能得到一个顺序索引对应一个字符,不会隔2个才到一个中文字符,因为中文三个编码对应一个字符,直接使用for k,v := range...阅读全文

博文 2020-03-23 14:35:45 stardust_0000

golang字符、字符串的那些事儿

通过下边的代码可以看出,r实质是int32,占用4个字节,值是25105;s是string,占用3个字节,值是e68891. 推断r应该是unicode编码的,s是utf8编码的. package main import( "fmt" ) func main() { r := '我' fmt.Printf("%t\n", r) // %!t(int32=25105) s := "我" fmt.Printf("%t, %d %x\n", s, len(s), s) // %!t(string=我) 3 e68891 fmt.Printf("%b\n", int32(r)) // 110001000010001 // 0000 0000 0000 0000 0110 0010 0001 0001...阅读全文

博文 2014-10-06 06:16:32 DarkWingBoy

golang md5

package main import ( "crypto/md5" "encoding/hex" "fmt" "io" ) // 官网的例子:http://golang.org/pkg/crypto/md5/ func main() { h := md5.New() io.WriteString(h, "123456") // 需要加密的字符串为 123456 fmt.Println(h.Sum(nil)) fmt.Printf("%x\n", h.Sum(nil)) c := md5.New() c.Write([]byte("123456")) // 需要加密的字符串为 123456 cipherStr := c.Sum(nil) fmt.Println(cipherStr) fmt....阅读全文

博文 2015-05-06 03:00:00 rojas

Go 应用国际化解决方案 i18n4go

这里有一个极其简单而又有用的 Go 项目,用来解决越来越常见的软件问题。Go 需要支持 i18n (国际化) 工具,但是现有的 Go 程序的国际化支持都比较冗长繁杂。[i18n4go](https://developer.ibm.com/open/i18n4go/)提供一个应用工作流进程 —— 从 Go 应用中提取字符串,合并他们到单个包(消除冗余),准备翻译,使底层代码容易接收他们...阅读全文

GO语言中的字符串的常见操作(strings包)

在Go语言的字符串中的常见操作 strings.HasPrefix(s string, prefix string) bool:判断字符串s是否以prefix开头 strings.HasSuffix(s string, suffix string) bool:判断字符串s是否以suffix结尾。 strings.Index(s string, str string) int:判断str在s中首次出现的位置,如果没有出现,则返回-1 strings.LastIndex(s string, str string) int:判断str在s中最后出现的位置,如果没有出现,则返回-1 strings.Replace(str string, old string, new string, n int):...阅读全文

博文 2019-05-15 18:35:26 qq5c9c828bc8d4b

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"))...阅读全文

博文 2014-10-04 19:27:20 Manville

golang 字符串与int类型转换

一、字符串转intfunc Atoi(s string) (int, error) 案例:执行结果:sf@SFdeMacBook-Pro  ~/Documents/project/src/test  go build int_string.gosf@SFdeMacBook-Pro  ~/Documents/project/src/test  ./int_stringint, 100 二、int转字符串func Itoa(i int) string 执行结果:sf@SFdeMacBook-Pro  ~/Documents/project/src/test  go build int_string.gosf@SFdeMacBook-Pro  ~/Documents/project/...阅读全文

博文 2018-09-21 18:35:40 IT职场小白

goLang Stringers 使用

Stringer 是一个可以用字符串描述自己的类型。`fmt`包 (还有许多其他包)使用这个来进行输出。 我这边单单做fmt包的演示。如果有兴趣 可以自己折腾一下 package main import "fmt" type Test struct { Name string Qq string } func (t Test) String() string { return fmt.Sprintf("name=%v|qq=%v", t.Name, t.Qq) } func main() { a := Test{"xiaochuan", "1533365771"} fmt.Println(a) } 有点意...阅读全文

博文 2016-10-05 15:00:02 liangguangchuan

golang 生成随机数,时间种子改进型

直接上代码: var ( randSeek = int64(1) l sync.Mutex ) //获取指定长度的随机字符串 //@params num int 生成的随机字符串的长度 //@params str string 可选,指定随机的字符串 func GetRandomSring(num int, str ...string) string { s := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" if len(str) > 0 { s = str[0] } l := len(s) r := rand.New(rand.NewSource(getRandSeek())) var buf bytes...阅读全文

博文 2015-06-17 20:23:36 rariki

golang中时间(time)的相关操作

获取当前时间 func getNow() { // 获取当前时间,返回time.Time对象 fmt.Println(time.Now()) // output: 2016-07-27 08:57:46.53277327 +0800 CST // 其中CST可视为美国,澳大利亚,古巴或中国的标准时间 // +0800表示比UTC时间快8个小时 // 获取当前时间戳 fmt.Println(time.Now().Unix()) // 精确到纳秒,通过纳秒就可以计算出毫秒和微妙 fmt.Println(time.Now().UnixNano()) // output: // 1469581066 // 1469581438172080471 } 格式化时间显示 func formatUnixTi...阅读全文

博文 2020-01-04 05:32:39 灰侠_bf44

关于 golang 判断字符串+ 英文 长度

~~~ 假如 aa:= "中国abc" fmt.Println(len(aa)) //返回 9 因为我要判断一个字符串的 标题 和 内容 标题==100限制 内容==4000限制 if (len(aa) >4000){ //这里明显错误了, 因为文章里可能包含 英文 和 中文字符 ,一个中文字符占用3个字节 //然后截取 0~4000的字符 其余不要 aa = aa[0:4000] //这样截取出来的字符串明显不正确的, 中英文 的文章组合 判断有点难啊 没思路了 } ~~...阅读全文

golang 生成任意长度token的简单方法

看到网上都是参考《Go Web编程》用的time加md5来生成 可以用更简单直接的方法 ```go import ( "fmt" "crypto/rand" ) // 生成num*2位的字符串 func RandToken(num int) string { b := make([]byte, num) rand.Read(b) return fmt.Sprintf("%x", b) } ``` 参考:https://stackoverflow.com/questions/25431658/how-to-generate-a-random-token-with-md...阅读全文

Golang字符串拼接效率

package main import ( "bytes" "strings" "testing" ) var strLen int = 1000 func BenchmarkConcatString(b *testing.B) { var str string i := 0 b.ResetTimer() for n :=0; n< b.N; n++ { str += "X" i++ if i >= strLen { i = 0 str = "" } } } func BenchmarkConcatBuffer(b *testing.B) { var buffer bytes.Buffer i := 0 b.ResetTimer() for n := 0; n < b.N; n++ { bu...阅读全文

博文 2018-03-09 14:30:02 jachin

golang和python有关字符串操作的对应方法

golang和python有关字符串操作的对应方法 (来自:flyking) 相关包有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 => 对应py...阅读全文

博文 2015-12-30 16:00:23 magicbreaker

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-12 12:00:32 lt695981642

golang时间

//获取本地location toBeCharge := "2015-01-01 00:00:00" //待转化为时间戳的字符串 注意 这里的小时和分钟还要秒必须写 因为是跟着模板走的 修改模板的话也可以不写 timeLayout := "2006-01-02 15:04:05" //转化所需模板 loc, _ := time.LoadLocation("Local") //重要:获取时区 theTime, _ := time.ParseInLocation(timeLayout, toBeCharge, loc) //使用模板在对应时区转化为time.time类型 sr := theTime.Unix() //转化为时间戳 类型是int64 fmt.Println(theTime) //打...阅读全文

博文 2016-08-03 13:00:00 zhangym

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 07:00:05 xtxy

golang 类型转换

仅作记录,以便以后用到时查看方便。 字符串与整形: //string to 10进制int64 i,err := strconv.ParseInt(string, 10, 64) //int64 to string fmt.Sprintf("%d",int64)//我一般用这种方式 s := strconv.FormatInt(int64,10)//查找资料后得知这种方式比较正规 //string to int i, err := strconv.Atoi(string) //int to string s := strconv.Itoa(int...阅读全文

博文 2016-04-11 21:00:02 u013401219

Golang最最最基础语法

这一节看下Golang的基础语法...嘛...如果懒得看的话,记得以下两点就好: 1 Golang的变量、函数参数等等涉及到类型的声明,都是变量名写在前,类型写在后的(和正统C系语法刚好相反) 2 循环语句for通吃所有 然后,就开始啦~ Go语言基本语法 package main import ( "fmt" ) func main() { fmt.Println("Hello Azen٩(●˙▿˙●)۶…⋆ฺ") } 作用:使用fmt这个库运行输出 定义变量 var 关键字 func variableZeroValueDefine() { var a int var s string fmt.Printf("%d %q\n", a, s) } 知识点: 变量名写在前面,变量类型写在后面 ...阅读全文

博文 2018-07-11 20:34:42 Azen

学习Golang语言(4):类型--字符串

学习Golang语言(4):类型--字符串 --- 跟着“码术”一起学习Golang语言,今天继续讲解Golang中的类型。今天讲解的是字符串。 **数值类型** 补充上一章节没有指出的地方: Golang还定义了三种依赖系统的类型:int、unint和uintptr。因为在32位系统和64位系统上用来表示这些类型的位数是不同的。 **字符串** Golang中另一个重要的内建类型是string。 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。也就是说对于传统的字符串是由字符组成的,而Go的字符串不同,它是由字节组成的。 Go语言的字符串的字节使用UTF-8编码标识Unicode文本。 字...阅读全文

golang 内建函数

close new panic complexdelete make recover real len append print imag cap copy println close 用于channel 通讯。使用它来关闭channel delete 用于在map 中删除实例。 len 和cap 可用于不同的类型, len 用于返回字符串、slice 和数组的长度. new 用于各种类型的内存分配。 make 用于内建类型(map、slice 和channel)的内存分配。 copy 用于复制slice append 用于追加slice。 panic 和recover 用于异常处理机制 print 和println 是底层打印函数,可以在不引入fmt 包的情况下使用。 complex、re...阅读全文

golang自动导入postgresql脚本

直接代码 package main import ( "fmt" "golang-objective-go/dataFoundation/dataConvert" "io/ioutil" "os/exec" "strings" ) func main() { dir_list, e := ioutil.ReadDir("./") if e != nil { fmt.Println("read dir error") return } for _, v := range dir_list { fileName := v.Name() if strings.Contains(fileName, ".sql") { c := exec.Command("psql", "-d", "xxxx", "...阅读全文

博文 2015-08-19 03:00:00 ziyouchutuwenwu

golang中获取字符串长度的几种方法

一、获取字符串长度的几种方法 - 使用 bytes.Count() 统计 - 使用 strings.Count() 统计 - 将字符串转换为 []rune 后调用 len 函数进行统计 - 使用 utf8.RuneCountInString() 统计 例: str:="HelloWord" l1:=len([]rune(str)) l2:=bytes.Count([]byte(str),nil)-1) l3:=strings.Count(str,"")-1 l4:=utf8.RuneCountInString(str) fmt.Println(l1) fmt.Println(l2) fmt.Println(l3) fmt.Println(l4) 打印结果:都是 9 二、strings.Cou...阅读全文

博文 2018-08-14 12:30:01 405845829qq

不用反射也可以通过字符串来映射函数

看了http包的源码,发现go语言其实也可以用字符串来映射函数, 不是用反射。 主要是type func的使用, http的默认路由就是用这个方法实现的。有兴趣可以看看他的那些Handler和HandleFunc的实现,一样一样的。呵呵~~ 有用记得给我点个赞,谢谢