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

golang实现接口类和多态的一种做法

package main import "fmt" type IMessage interface { Print() } type BaseMessage struct { msg string } func (message *BaseMessage) Print() { fmt.Println("baseMessage:msg", message.msg) } type SubMessage struct { BaseMessage } func (message *SubMessage) Print() { fmt.Println("subMessage:msg", message.msg) } func interface_use(i IMessage) { i.Print() }...阅读全文

博文 2015-04-14 11:00:00 miros

vendor

# 引言 Go Vendoring是一种对GOPATH的扩展,其意义在于:让原生的工具链无缝支持第三方库的版本管理,如`go build/run/test`. 在Go1.5之前,多个项目(ProjA,ProjB)如果想要引用某个第三方库的不同版本,可以在编译时修改GOPATH,将对应的第三方库加入GOPATH中,这样一来势必需要在原生工具链上层有一层脚本或Makefile抽象. Go Vendoring解决了这个问题,实现了`GOPATH`的扩展:将项目ProjA依赖的外部库代码放到具体位置的时候,直接用原生的Go Command是可以找到、识别这些代码文件(就好像修改了`GOPATH`一样). Vendoring是Go1.5中引入的[实验特性](https://do...阅读全文

golang for,range的坑

for,range 的k,v变量在整个遍历过程中共用,不能直接进行引用传递,即地址传递,但循环内定义的变量只能为当前循环所使用。 错误代码: package main import ( "encoding/json" "log" "time" ) type test struct { Name string `bson:"name" json:"name" yaml:"name"` // Command name (unique on the profile) } func (test test) String() string { out, err := json.Marshal(test) if err != nil { return err.Error() } return strin...阅读全文

protobuf导出golang,调整默认tag的方法

protobuf导出golang,调整默认tag的方法 问题概述 在protobuf导出到golang的时候,生成的.go文件里的struct的tag是没办法灵活设置的,以下面这个message为例 test.proto syntax=proto3; package test; option go_package = ".;test"; message MyMessage { int64 Code = 1; } 执行protoc --proto_path=. --go_out=. test.proto导出的test.pb.go里的MyMessage这个结构体的定义会是这样: type MyMessage struct { state protoimpl.MessageState sizeCa...阅读全文

博文 2020-05-10 21:32:43 一条大菜狗HS

Go1.10 支持 HTTPS 代理

Go1.9 出来后 6 个多月的时间,Go1.10 就被[发布](https://blog.golang.org/go1.10)。新版本带来大大小小的变化([发行说明](https://golang.org/doc/go1.10)),但是我想谈谈有关 `net/http` 包的改变。1.10 版本支持在 HTTPS([commit](https://github.com/hyangah/go/commit/ab0372d91c17ca97a8258670beadadc6601d0da2)) 上的代理,而在原来它只能通过使用普通的(未加密)HTTP 来和代理进行沟通。接下来让我们来看看它是否真的可以工作。 ## Server 为了验证这一改变,首先请用 golang 启动一个简单的 HTTP(...阅读全文

构建开发者能力金字塔,化解年龄焦虑 2018-9-10

构建开发者能力金字塔,化解年龄焦虑很多开发者对年龄很焦虑。要入行时,到处找人问,程序员到底是不是青春饭。干了几年,快30了,开始担忧,到底能干到多少岁,该不该转管理。过了30了,开始跟着大家讨论,35岁到底是不是程序员的一道坎,要是干不成管理,是不是该转行了。过了35了,开始在知乎上翻回答,看40以上的程序员都干什么去了。……一开始我也是焦虑的,不过后来想明白了,精力的不足,可以用经验、技巧和方法论来弥补。这个道理,从《天龙八部》中也可以看出来。《天龙八部》第39章——“解不了,名缰系嗔贪”——中有几段文字,描写了大轮明王鸠摩智如何借助小无相功运使少林七十二绝技,惊倒玄生、玄慈等少林高僧,非常精彩。(想看的小伙伴可以戳这里:大轮明王鸠摩智教你找核心竞争力。)对鸠摩智来讲,少林七十二绝技是外在...阅读全文

入职阿里的机会来了!2018阿里巴巴校园招聘季火热进行中!

导语:2018阿里巴巴校园招聘季火热来袭!技术、设计、产品、游戏等25个岗位等你来! 简历投递地址 https://campus.alibaba.com/positionList.htm 招聘流程 一、关于网申/内部推荐: 面向群体:2018届毕业生(毕业时间:2018.1.1-2018.12.31) 内推时间:7月4日至8月18日 网申时间:7月4日至8月18日 二、关于在线编程: 1. 面向人群:技术类岗位同学 2. 测验有效期:简历投递后请点击邮件链接进行在线编程测验,完成答题的同学会增加面试几率 3. 测验时间:总计30分钟(具体时长请注意查看邮件通知),一旦开始编程,请在规定的时间内完成并提交,超过时长系统将不能继续答题 4. 测验形式...阅读全文

Golang 项目部署实战

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/netdxy/article/details/79431415 一直认为不懂部署的开发工程师不是好的开发工程师,以下以一些实例讲解自己在项目中的 Golang 后端部署的情况。 一般部署脚本应该具有构建、启动、停止、回滚已经查看记录日志等功能,以下分别将这些功能以单个脚本的形式给出,当然也可以写成Makefile 的形式。 单个部署脚本的形式,在一个目录下建立如下文件: bin # 目录,用于存放每次 build 之后存放的二进制文件 app.log # 用来记录的日志文件 log.sh # 实时查看日志 build.sh # 构建 run.sh # 启动某一次编译版本 start.sh # 启...阅读全文

博文 2018-12-06 19:31:34 netdxy

怎么用Python实现FTP功能?

可以利用 Python 的 Pyftpdlib 模块快速搭建FTP 服务器实现文件上传下载功能,以下是具体做法: 安装 Pyftpdlib 模块 $ sudo pip install pyftpdlib 通过 Python 的 -m 选项将 Pyftpdlib 模块作为一个简单的独立服务器来运行,假设我们需要共享目录 /Users/Edu/Oldboy,只需要以下这个命令行就可以轻松实现: $ cd /Users/Edu/Oldboy $ python -m pyftpdlib [I 2018-05-04 15:13:12] >>> starting FTP server on :::8080, pid=7517 <<< [I 2018-05-04 ...阅读全文

2019-10-10,Golang程序入口

通过Beego的阅读,学习了基本的golang的语法及开发思路。 再通过Go SDK的源码,熟悉一下API构成,然后开始实现一个简单的低代码框架。 Go SDK中的package列表 还是挺多的,挑几个学习一下,以此为教材学习一下Golang。 还是以debug,从程序开始学习。 runtime/proc.go runtime/proc.go作为Go程序的执行入口,看一下里面都有什么。 if GOARCH != "wasm" { // no threads on wasm yet, so no sysmon systemstack(func() { newm(sysmon, nil) }) } 可以看到,Go是支持WebAssembly的,可以在浏览器中调用。 具体做法请参考: https:...阅读全文

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

deeply equal(深度相等)

1.deeply equal条件 reflect包里面有一个判断是否deeply equal的函数,对于不同的类型,deeply equal的定义如下。 类型 deeply equal条件 数组 对应的元素deeply equal 结构体 对应的域deeply equal 函数 都为nil interface 实际的值deeply equal map 同时满足以下条件: 1. 同时为nil或者同时不为nil2.长度相同 3.同一个map,或者对应key的value deeply equal 指针 满足"=="对比,或者指向的值deeply equal sliece 同时满足以下条件: 1. 同时为nil或者同时不为nil2.长度相同 3.指向相同的底层数组,或者对应的元素deeply equ...阅读全文

博文 2019-11-03 09:33:29 moonbamboo