Go

Go

golang中的空接口使用

42 0

1、空接口Golang 中的接口可以不定义任何方法,没有定义任何方法的接口就是空接口。空接口表示,没有任何约束,因此任何类型变量都可以实现空接口。空接口在实际项目中用的是非常多的,用空接口可以表示任意数据类型func main() { // 定义一个空接口 x, x 变量可以接收任意的数据类型 var x interface{} s := "你好 golang" x = s fmt.Printf("type:%T value:%v\n", x, x) i := 100 x = i fmt.Printf("

Go

Golang使用for循环的一个小技巧

96 0

在进入for循环时,若循环判断条件中有len()函数,示例如下: for i := 0; i < len(L); i++ { ................. } 这种写法存在一个缺陷,就是每次进行循环遍历时,都要计算一遍len(L)的值,损耗了性能。此时应该改为下面这种写法: for i, length := 0, len(L); i < length; i++ { .....

Go

17 Golang结构体详解(三)

38 0

一、结构体嵌套demo1type User struct {username stringpassword string sex stringage int address Address //User结构体嵌套Address结构体 }type Address struct {name stringphone stringcity string }func main() {var u Useru.username = "lxc"u.password = "123456"u.address.name = "

Go

18 Golang结构体详解(四)

39 0

结构体和Json相互转换当Golang要为App或者小程序提供Api接口数据时,涉及到结构体和Json之间的相互转换Golang序列化是指把结构体数据转换成Json格式的字符串;Golang Json的反序列化是指把Json数据转化成Golang中的结构体对象Golang中的序列化和反序列化主要通过"encoding/json"包中的json.Marshal()和json.Unmarsual()序列化结构体中私有属性不能被json包访问(首字母必须大写)package main import ("fmt"

Go

开发者的福音,go也支持linq了

74 0

使用go get gopkg.in/ahmetb/go-linq.v3import . "gopkg.in/ahmetb/go-linq.v3"import . 的意思是直接使用库的方法,而不使用前缀。当然你也可以添加,官方的写法是这样的。案例定义一个员工类type Employee struct { Name string Age int Sex int // 0 男 1 女 WorkYear int //工龄}创建不同的列表func initEmployeeData() [

Go

通过协程查找数组中元素

49 0

给定一个无序数组,求某个数值是否存在数组当中。 正常需要先排序,再二分去做的,不过由于 golang 中是可以很方便就可以起多个协程,所以测试下,多个协程分别查找各自的一段,如果查到就通知其他协程停止查找,当然为了完整性,在程序执行 5 秒,还未找到则停止查找。 package mainimport ("context""fmt""math""math/rand""time" )func generate(size int) []int {return rand.Perm(size) }func gene

Go

手撸golang etcd raft协议之2

40 0

手撸golang etcd raft协议之2 缘起 最近阅读 [云原生分布式存储基石:etcd深入解析] (杜军 , 2019.1) 本系列笔记拟采用golang练习之 gitee: https://gitee.com/ioly/learning.gooop raft分布式一致性算法 分布式存储系统通常会通过维护多个副本来进行容错, 以提高系统的可用性。 这就引出了分布式存储系统的核心问题——如何保证多个副本的一致性?Raft算法把问题分解成了领袖选举(leader election)、 日志复制(log

Go

go1.4 bootstrap 源码安装新版go

138 0

1.下载go1.4-bootstrapwget https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz tar -zxvf go1.4-bootstrap-20171003.tar.gz2.配置GOROOT_BOOTSTRAPvim /etc/profile.d/go1.4-bootstrap.shexport GOROOT_BOOTSTRAP=/usr/local/src/go1.4-bootstrap export CGO_ENABLED=0s