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

GO语言的一些简单数据类型之间相互转换

在GO语言的使用过程中总会遇到一些类型之间相互转换的问题,做了一个简单的总结。只列出了几种易用的类型间的转换,如果用到其他类型间的数据类型格式转换,查看GO文档是很不错的选择。 strconv包实现了基本数据类型和其字符串表示的相互转换。 //string到int value_int,err:=strconv.Atoi(string) //int到string str:=strconv.Itoa(value_int) //string到int64 value_int64, err := strconv.ParseInt(string, 10, 64) //int64到string,需注意下面转换规定 //FormatInt returns the string representation ...阅读全文

博文 2015-06-23 23:02:19 qq_534019165

Golang实现红黑树

盼望已久的五一终于到来了!我一直在考虑要不要利用这几天时间好好睡上一觉,习惯成自然,宅也是如此。睡觉都觉得无聊的时候,就有了写点什么的念头。也借此机会提高一下写作能力,看看什么时候能写一部长篇小说。 用Golang实现红黑树算是一次尝试,毕竟工作环境没用到,不知道以后会不会用。自己也是看着玩,开阔一下思路。从我开始看Golang的doc到写这篇文章利用的是大概2周中的业余时间,所以Golang的语法掌握的还有欠缺;很多特性,例如高并发等都还没有测试,如文中出现错误或不合理的地方,请指正。 本文应用的基本逻辑参考自wiki的红黑树,依据golang的语言特性部分结构可能稍有改动。同时这篇文章里也加入了我在实现过程中的想法和实现时可能会遇到的问题。wiki上的红黑树中文版本,不过建议直接看英文版...阅读全文

博文 2016-05-03 14:00:03 happywjh666

从Go、Swift出发:语言的选择需谨慎

本文转自 : http://www.csdn.net/article/2014-12-09/2823025 摘要:无论是开源的Go,还是闭源的Swift,新的语言总是利弊一体。不过可以确定的是,新的语言给予程序员一些有用的支撑点。而对于开发者而言,不管你成长多少,你都会受制于你使用的根源语言,所以选择需谨慎。 Google于2009年第一次提出了Go的构思,Facebook在去年春天引入了Hack,随后不久Apple也发布了其Swift语言。 在 战争中,胜利者写历史书;在科技中,赢的公司都在写编程语言。互联是建立在开发标准和代码之上,但是社交网络和云计算领域受企业巨头控制,并且它们开始把 自己独一无二的印记烙在数字科技上——这是必然的,就像征服者威廉和他的诺曼人一样,大量新的词汇加入到英语...阅读全文

博文 2016-04-10 09:05:09 ftm-datablogs

安全地解析不受信任的文件格式Puffs

Puffs,全名为 Parsing Untrusted File Formats Safely ,是 Google 开源的一个用于特定领域的语言和库,可安全地解析不受信任的文件格式,包括图像、音频、视频、字体和压缩档案等。 与 C 语言不同,Puffs 对于缓冲区溢出、整数算术溢出和空指针解引用是非常安全的。Puff 和其他内存安全语言之间的主要区别在于,所有这些检查都是在编译时完成的,而不是在运行时完成的。 Puffs 旨在像 Go 或 Rust 一样生成安全的软件库,同时能像 C 一样快,可以在任何使用 C 库的地方使用。但需注意的是,Puffs 不是一种通用的编程语言,虽然在技术上可行,但似乎不值得去写一个专门的 Puffs 编译器出来...阅读全文

go 协程使用陷阱

golang 语言协程 协程中使用全局变量、局部变量、指针、map、切片等作为参数时需要注意,此变量的值变化问题。 与for 循环,搭配使用更需谨慎。 1、内置函数时直接使用局部变量,未进行参数传递 func main() { for i := 0; i < 100; i++ { go func() { fmt.Println(i) }() } } 运行效果 func main() { for i := 0; i < 100; i++ { go func(i int) { fmt.Println(i) }(i) } } 运行效果 2。地址传递的参数 type Per struct { name string bh int } func main() { p := &Per{} for i :...阅读全文

博文 2016-06-25 06:00:00 xia_xing

19年第41周:Go语言 微信小程序获取手机号 -加密数据解密算法-AES-128-CBC

一、简介 获取手机号 获取微信用户绑定的手机号,需先调用 wx.login 接口。 因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 button 组件的点击来触发。 注意:目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体)。需谨慎使用,若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。 二、参考官方Python示例复写Golang版本 NOTE: 微信官方没有给Golang版本,但给了C++,PHP,Node,Python版本。这里选用Python来作为参考 python版本和Golang版本对比 三、参考资料 微信小程序开发指南-获取手机号 微信小程序开发指南-加密数据解密算法-官方案例下...阅读全文

博文 2019-10-07 19:32:44 aside section ._1OhGeD

protobuf 导入另一文件夹下的proto

环境: protobuf2 ,golang 项目test下 存放proto的目录结构 ---test // 项目根 ------ cs --- cs.proto ------ ss --- ss.proto cs.proto syntax = "proto2"; package cs; message Test{ optional string name = 1; } ss.proto syntax = "proto2"; package ss; import "test/cs/cs.proto"; message Test{ optional cs.Test cstest = 1; } ss.proto 文件引用 cs/cs.proto import 不允许使用相对路径Backslashe...阅读全文

博文 2020-04-23 10:32:51 yddeng

golang-mongodb范例

1 package main 2 3 import ( 4 "log" 5 6 "gopkg.in/mgo.v2" 7 "gopkg.in/mgo.v2/bson" 8 ) 9 10 type Address struct { 11 Address string 12 } 13 type Location struct { 14 Longitude float64 15 Latitude float64 16 } 17 18 type Person struct { 19 Id bson.ObjectId `bson:"_id"` 20 Name string 21 Age_Int int 22 Address []Address 23 Location Location 24 } 25 2...阅读全文

博文 2016-03-17 01:00:01 --xiaoyao--

[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

go语言细节

数组与字符串为值类型,切片、映射、通道为值类型,赋值需注意。 1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func main() { 8 //数组 9 a1 := [3]int{1, 2, 3} 10 a2 := a1 11 a2[0] = 2 12 fmt.Println(a1) //print: 1 2 3 13 fmt.Println(a2) //print: 2 2 3 14 // 字符串 15 s1 := "123" 16 s2 := s1 17 s2 = "223" 18 fmt.Println(s1) //print 123 19 fmt.Println(s2) //print 223 20 // 切片 21 slice1 := []...阅读全文

博文 2015-11-24 03:00:00 --xiaoyao--

go语言环境搭建

本文章讲解如何在Ubuntu 14.04 下配置Go语言(GO语言版本为 1.5)的开发环境。 第一步:安装相关环境组件 请在终端输入以下指令: sudo apt-get install build-essential 第二步:上传相关GO语言安装包至服务端 可使用Xftp或者winscp上传。上传后后解压到相关位置,需注意解压的用户权限。 第三步:配置Go语言环境变量 首先,使用任何文本编辑器打开 home 目录下的 .bashrc 文件 如果你不确定到底在哪里,在终端直接输入以下指令也可以: vim ~/.bashrc 然后进入文本编辑界面,请在文件的最后追加大致如下图内容: export GOROOT=GO语言解压的文件夹目录 export PATH=${PATH}:GO语言解压的文件...阅读全文

博文 2018-03-24 15:32:33 xie1xiao1jun

[golang] json序列化时自动将id加密

对于有规则的数据索引,比如用户ID,商品ID,订单编号,很容易第三方直接遍历抓取资源。采用liamylian/json-hashids进行加密,可以有效避免这类情况发生。但因为是对等加密,需注意该加密算法并不安全,使用时需注意场景,详情请见hashids。 package main import( "fmt" "github.com/liamylian/json-hashids" "time" ) var json = jsonhashids.NewConfigWithHashIDs("abcdefg", 10) type Book struct { Id int `json:"id" hashids:"true"` // 这里要给id打上hashids的tag Name string `j...阅读全文

go语言环境搭建

本文章讲解如何在Ubuntu 14.04 下配置Go语言(GO语言版本为 1.5)的开发环境。 第一步:安装相关环境组件 请在终端输入以下指令: sudo apt-get install build-essential 第二步:上传相关GO语言安装包至服务端 可使用Xftp或者winscp上传。上传后后解压到相关位置,需注意解压的用户权限。 第三步:配置Go语言环境变量 首先,使用任何文本编辑器打开 home 目录下的 .bashrc 文件 如果你不确定到底在哪里,在终端直接输入以下指令也可以: vim ~/.bashrc 然后进入文本编辑界面,请在文件的最后追加大致如下图内容: export GOROOT=GO语言解压的文件夹目录 export PATH=${PATH}:GO语言解压的文件...阅读全文

博文 2017-07-20 04:02:50 xie1xiao1jun

Go 面向对象式编程

『就要学习 Go 语言』系列 -- 第 25 篇分享好文 Go 语言没有对象的概念,但是 struct 类型有着和对象类似的特性。struct 类型可以定义自己的属性和方法。这篇文章我们来总结下 Go 语言中关于 “继承” 和多态的概念。 嵌入类型 嵌入类型是指将已有的类型直接声明在新的结构类型里。不像 Java、C++ 等语言,Go 语言没有继承,但是可以通过组合的方式实现代码的复用。 type User struct { Name string Email string } type Admin struct { User Level string } func (u *User) Speak() { fmt.Println("I am user",u.Name) } 复制代码上面的代码...阅读全文

博文 2019-06-12 11:04:22 Seekload