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

Golang中range的使用方法及注意事项

一、用法range类似迭代器,可以遍历数组,字符串,map等等,对象的不同,返回的结果也不同。 12345678910111213141516171819package mainimport "fmt"func main(){ //数组的遍历 a := [3]int {1, 2, 3} for i, n := range a{ fmt.Println(i, n) } //切片的遍历 b := []int{2, 3, 4} for i, n := range b{ fmt.Println(i, n) } //map的遍历 c := map[string]int{"Hello":1, "World":2} for k, v := range c{ fmt.Println(k, v) }} 结果:...阅读全文

博文 2018-05-17 09:25:56 马谦的博客

go for循环

快速入门 for i := 1; i <= 10; i++ { fmt.Println(i) } 流程图 for循环注意事项和细节 1、循环条件是返回一个布尔值的表达式 2、 for 循环的第二种使用方式 for 循环判断条件 { //循环执行语句 } //将变量初始化和变量迭代写到其它位置 示例: j := 1 for j <= 10 { fmt.Println("hello....", j) j++ } 3、 for 循环的第三种使用方式 for { //循环语句 } 等价:for ; ; { } 是个无限循环,需要配合break语句来用 示例: k := 1 for { //等价 for ; ; { } if k <= 10 { fmt.Println("ok...", k) } el...阅读全文

博文 2019-02-23 21:34:43 StevenQin

Mac OS X 安装Golang

1.确保Mac OS X 安装了Git,Hg,在Mac OS X 10.8+下面安装Xcode CommandLine Tools就可以了,10.9以上安装Xcode就包含了Git工具,hg请安装SourceTree,这个Git GUI工具包含了Mercurial工具 2.下载安装go1.3.1.darwin-amd64-osx10.8.pkg 3.安装Sublime Text,一次安装插件,GoSublime,配置GoSublime-Settings-User文件,切记不要改动任何Default文件,例如:GoSublime-Setting-User写入 { "env": { "GOPATH": "$HOME/Documents/GoPATH/", "GOROOT": "/usr/loca...阅读全文

博文 2014-12-04 11:00:01 Vanson

go里面select-case和time.Ticker的使用注意事项

上周末参加Go技术聚会,京东的美女工程师讲到一个select-case和time.Ticker的使用注意事项(真实的应用场景是:在测试收包的顺序的时候,加了个tick就发现丢包了),觉得很有意思,记录一下。 package main import ( "fmt" "runtime" "time" ) func init() { runtime.GOMAXPROCS(runtime.NumCPU()) } func main() { ch := make(chan int, 1024) go func(ch chan int) { for { val := <-ch fmt.Printf("val:%d\n", val) } }(ch) tick := time.NewTicker(1 * t...阅读全文

Golang函数中defer的作用以及细节

defer是什么? 在Go语言中,可以使用关键字defer向函数注册退出调用,即主函数退出时,defer后的函数才被调用。defer语句的作用是不管程序是否出现异常,均在函数退出时自动执行相关代码。 defer的用途 在函数中,程序员经常需要创建资源(比如:数据库连接、文件句柄、锁等) ,为了在函数执行完 毕后,及时的释放资源,Go 的设计者提供 defer (延时机制)。package main import "fmt" //defer 可以向函数注册、退出调用,即当主调函数退出时,defer后的函数才被调用, // defer语句的作用就是不管程序是否出现异常,均在函数退出是自动执行相关代码 func sum(n1 int,n2 int) int{ //当执行到defer时,暂时不执行,...阅读全文

博文 2019-02-28 00:35:43 tianya1993

Go Agent

在这片神奇的土地上,FQ应该是每个网友必需掌握的技能,FQ的首要,就是F过心里的Q。心中无Q,才是最重要的。本教程介绍用 GAE(Google App Engine)FQ的方法。GAE的官方介绍:“Google App Engine,在Google的基础架构上运行您的网络应用程序。” GAE的优点很多,首先它是完全免费的,并且非常稳定,其次它提供大流量,足够让你在YouTube上看各种视频了。 注意事项! 本教程开始之前需要准备Gmail账号和Chrome浏览器。go agent在这里http://www.dengyukeji.com/thread-567-1-1.html下载。 操作步骤 1、打开:https://appengine.google.com/,输入gmail用户密码登入。 2...阅读全文

博文 2015-06-18 09:09:14 dengyukeji

Go-template-常用方法详解-注意事项

Go template包下面有两个函数可以创建模板示例 func New(name string) *Template func ParseFiles(filenames ...string) (*Template, error) 首先要说的是每一个template内部可以存储多个模板 而且每个模板必须对应一个独立的名字 两个的不同点在于 使用New在创建时就为其添加一个模板名称 并且执行t.Execute()会默认去寻找该名称进行数据融合 使用ParseFiles创建模板可以一次指定多个文件加载多个模板进来 但是就不可以使用t.Execute()来执行数据融合 因为使用t.Execute()无法找到要使用哪个加载过的模板进行数据融合 而只有New创建时才会指定一个t.Execute()执行...阅读全文

博文 2015-12-20 20:00:06 u012807459

Golang使用RemoteAddr()获取远程主机地址的注意事项

一、问题描述http.Request 下的方法RemoteAddr() 可以获取客户端的地址和端口号,最近的一个项目中用到了这个方法。 使用过程中一直都没有什么问题,但是当项目上线之后就发现不管怎么获取ip,客户端地址都是127.0.0.1 。 对于这个问题一直百思不得其解,最后搞了半天才发现是nginx 的原因。 因为线上项目使用nginx做了反向代理,所以导致服务端每次获取的都是nginx的地址,即127.0.0.1 。 关于这个问题的具体的内容可以查看:HTTP协议中的X-Real-IP, X-Forwarded-For和remote_addr头 二、解决方法当http请求不存在代理的时候,使用这个方法时没有问题的,但是在有代理的情况下,就只能通过其他的方法来获取了。 如果是nginx...阅读全文

博文 2018-05-17 09:53:05 马谦的博客

golang开发流程及注意事项

golang开发流程及注意事项 1、开发流程 1.1. 复杂框架类服务架构流程 明确整个业务流程 划分独立处理模块,弄清楚那些模块会出现并发 明确基本数据结构 a、request b、response c、error错误处理 抽象接口 针对接口编程,我们必须的定义好每一个环节的接口,这里有一个点必须的注意:就是我们在实现接口的时候,NewXXX()获取实现结构类型的返回值必须是借口对象,便于统一处理 明确调度器的职责 中间件 a、各个独立模块之间如何通信,如何统一管理各个木块之间的通道,通道管理器 b、如何让各个独立模块统一听从调度器的调度,停止信号处理器、contex包的使用 c、独立模块的管理和限流,实体池 d、统一的实体标记管理,Id生成器 注意:这里有一个限流的问题,一般情况下,我们...阅读全文

博文 2019-01-18 15:34:51 yongfutian

HBase Go客户端Row构造注意事项

1. Hbase 的Go客户端语言使用方法 2. Hbase的Row使用注意事项 2.1. Row的前几个字段尽量散列 2.2. Row的排序是把所有Row中的字符做字典排序 我们最近在一个项目中使用Hbase做日志数据的存储,在其之上做一些数据分析工作,相对java来说,团队成员对Go的使用更熟练,所以自然使用Go作为Client的开发语言, 以前从来没有跟Hbase打过交道,本来一个比较简单的任务,愣是磕磕绊绊做了好久。。。 本文只说说Hbase的Row构造时的注意事项 1 Hbase 的Go客户端语言使用方法 Hbase官方没有Go的客户端,但是它提供了thrift服务,我们可以用Go语言开发一个thrift 的client,通过向hbase的thrift server发送RPC请求,...阅读全文

博文 2015-02-10 03:00:01 cobbliu

golang sync.Pool试用说明及注意事项

Go tip 是 Go 语言的实验分支,包含了很多尚在讨论,但很有可能会加入 stable 分支的特性。“Go tip 在做什么”(原文地址:What's happening in Go tip)分析总结了 Go 语言尚在开发中的一些重要特性。 本文译自:What's happening in Go tip (2014-01-10) 现在是 2014 年了,刚刚经历了圣诞和新年前夜,Go 团队就已经开始为下一个发布版本而工作了。也因此,“Go tip 在做什么”系列也重开了。 作为这个系列的最新一篇,这篇文章将会有些小调整。最重要的调整是,不会再遵循每周一篇文章的发布周期。一周里可能有几篇文章,也可能一篇都没有。这个调整,一部分由于个人原因,一部分也因为这样可以更灵活的追踪 Go 的改变。这...阅读全文

Go语言中不同类型切片之间的相互转换

将 []T 切片转换为 []byte 类似C语言中将其他类型的数组转换为char数组: func ByteSlice(slice interface{}) (data []byte) { sv := reflect.ValueOf(slice) if sv.Kind() != reflect.Slice { panic(fmt.Sprintf("ByteSlice called with non-slice value of type %T", slice)) } h := (*reflect.SliceHeader)((unsafe.Pointer(&data))) h.Cap = sv.Cap() * int(sv.Type().Elem().Size()) h.Len = sv.Len...阅读全文

博文 2015-05-12 21:00:03 chai2010

总结了才知道,原来channel有这么多用法!

这篇文章总结了channel的10种常用操作,以一个更高的视角看待channel,会给大家带来对channel更全面的认识。 在介绍10种操作前,先简要介绍下channel的使用场景、基本操作和注意事项。 channel的使用场景 把channel用在数据流动的地方: 消息传递、消息过滤 信号广播 事件订阅与广播 请求、响应转发 任务分发 结果汇总 并发控制 同步与异步 ... channel的基本操作和注意事项 channel存在3种状态: nil,未初始化的状态,只进行了声明,或者手动赋值为nil active,正常的channel,可读或者可写 closed,已关闭,千万不要误认为关闭channel后,channel的值是nil channel可进行3种操作: 读 写 关闭 把这3种操...阅读全文

golang中设置Host Header的小Tips

前言 笔者最近时间一直在学习和写Ruby和Go,尤其是Go,作为云计算时代的标准语言,写起来还是相当有感觉的,难过其会越来越火。 不过写的过程中,也遇到了一些小问题,本文就是分享关于go语言设置 HTTP请求当中 Host Header的一个小注意事项。 常规做法 通常我们在设置HTTP的Header请求时,一般都是这么做: Header.Add("Authentization", "TOKEN") Header.Add("Content-Type", "application/json") ... Java, Ruby, Go 都是如此,区别的只是语法不同。但是对于Host Header的处理就不同了。在Go中,如果我们这么写: header.Add("Host", "XXXXXXXXX"...阅读全文

博文 2016-01-27 03:00:00 jinsdu

美团云老板和老板娘去度假,员工任性!5折券再送5天!!!

【活动介绍】值双11来临之际,美团云特别推出云主机,网络,数据库,负载均衡等产品的5折优惠券,以及对象存储3折优惠券。同时还推出“买就返享5折”,“以及分享得返利”等特惠活动,欲知详情,就请戳下方的活动链接吧! 悄悄告诉你~大老板和老板娘去度假了!我们任性的将活动延期5天! 【领券地址】: https://mos.meituan.com/activity1510?site=golang&location=homepage&campaign=20151026sales ![5tian.jpg](http://studygolang.qiniudn.com/151109/b3eeebbde478e6396d00b2c095365dc3.jpg) 【活动时间】10月26日至...阅读全文

Win8 to Go可以使用u盘将Windows 8操作系统装在u盘

Win8 to Go与go语言无关 Windows 8操作系统企业版内含一个Windows To Go的功能,简单地讲就是可以使用u盘将Windows 8操作系统装在u盘,这个所谓的工作区,就是和Windows 8操作系统相差无几(和传统的u盘PE系统不一样)。但是,很多人尝试安装失败,其中最重要的原因是没有关注对此软件安装的使用环境、方法和注意事项的一些细节。 Windows To Go 具备条件: 1 硬件需求: 电脑:安装Windows 8操作系统,CPU需要在1GHz以上,内存空间2GB以上,显卡需要支持 DirectX 9和WDDM 10或更高版本。 Windows To Go 2 u盘:电脑的USB接口最好是支持USB3.0的,如果电脑...阅读全文

关于 Go 即将支持的 WebAssembly 的一些注意事项

这是一篇关于 webassembly 的即时记录,它的目的是给我做个备忘而不仅仅是如果使用它的教程。 即将发布的 Go 1.11 版本将支持 Wasm。@neelance 做了大部分的实施工作。对 wasm 的支持已经可以通过他在 github 上的工作分支进行测试。 看[这篇文章](https://blog.gopheracademy.com/advent-2017/go-wasm/)了解更多信息 ## 工具链设置 要从 go 源码生产一个 wasm 文件,您需要从源码获取并为 go 工具集打补丁: ``` ~ mkdir ~/gowasm ~ git clone https://go.googlesource.com/go ~/gowasm ~ cd ~/gowasm ~ git ...阅读全文

博文 2018-07-14 12:06:09 themoonbear

【视频分享】尚硅谷韩顺平Go语言核心编程

go语言 尚硅谷菁英师资整合业界资源,历时一年,打磨出专注于区块链技术的GO语言视频教程。教程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。——尚硅谷官网 尚硅谷韩顺平Go语言核心编程 001_Golang可以做什么 002_如何学习Golang更高效(1) 003_如何学习Golang更高效(2) 004_程序的基本概念 005_Go语言发展简史 006_Go语言的特性和快速体验 007_Golang开发工具介绍 008_windows下VSCode的安装和使用(1) 009_windows下VSCode的安装和使用(2) 010_Linux下VSCode的安装和使用 011_Mac下VS...阅读全文

博文 2018-10-09 19:34:43 石扒皮java栈点

golang缩略图

今天研究了golang生成缩略图的相关知识,在网上找到一篇不错的相关博客,博客地址:http://www.cnblogs.com/ghj1976/p/3445507.html。 有个注意事项这里提醒一下: 官方文档原话: Image接口可以通过调用如NewRGBA和NewPaletted函数等获得;也可以通过调用Decode函数解码包含GIF、JPEG或PNG格式图像数据的输入流获得。解码任何具体图像类型之前都必须注册对应类型的解码函数。注册过程一般是作为包初始化的副作用,放在包的init函数里。因此,要解码JPG图像,只需在程序的main包里嵌入如下代码: import _ “image/JPG” _表示导入包但不使用包中的变量/函数/类型,只是为了包初始化函数的副作用。 整理了一下代码:...阅读全文

博文 2015-10-21 16:00:09 u013025612

Python内置对象实现的方法及注意事项

![QQ截图20150928150103.png](http://studygolang.qiniudn.com/150928/e6361a28482c2d44561584940a75112b.png) Python语言中,所有的东西都是对象,因此对于python初学者来说,搞清楚python对象的具体实现非常重要。 Python中的对象主要分为类型对象和实例对象,但也不排除有同时属于类型和实例的对象,而不管是什么对象,除了内置的类型对象外,都存在于堆上,内置的类型对象则静态分配内存。下面我们就一起来看看python常见的内置对象及其实现方法吧。 1、int int这个对象比较简单,但还是需要重点了解,以便高效的实现。python首先有小整数对象。默认在[-5, 25...阅读全文

channel关闭的注意事项

关闭不再需要使用的 channel 并不是必须的。跟其他资源比如打开的文件、socket 连接不一样,这类资源使用完后不关闭后会造成句柄泄露,channel 使用完后不关闭也没有关系,channel 没有被任何协程用到后最终会被 GC 回收。关闭 channel 一般是用来通知其他协程某个任务已经完成了。golang 也没有直接提供判断 channel 是否已经关闭的接口,虽然可以用其他不太优雅的方式自己实现一个: func isClosed(ch chan int) bool { select { case <-ch: return true default: } return false } 不过实现一个这样的接口也没什么必要。因为就算通过 isClosed() 得到当前 channel...阅读全文

博文 2018-12-12 17:34:46 bocsoft

使用CGO进行GC优化的注意事项

前阵子我利用cgo对游戏内存数据库的数据存储方式做了优化,减少了对象数量。但是程序放到线上环境后出现了段错误,直接导致进程退出,只好临时又把优化的部分去掉,去掉后程序又继续稳定运行了两周。 优化代码撤下来后,我重新整理了代码。整理下来,我觉得对含有字符串字段的表的优化逻辑太过复杂了,并且很难控制边界情况。 这里举个例子: type MyTable struct { Name string } func InsertMyTable(myTable MyTable) { nameLen := C.size_t(len(myTable.Name)) name := C.calloc(1, nameLen) C.memcpy(name, unsafe.Pointer((*reflect.String...阅读全文

博文 2014-10-13 20:37:36 达达

程序员的简历怎么写?

前言 一份简历该怎么写?不同人和行业都有不同的看法观点。今天我就结合前面学习怎么写程序员简历一点点经验记录下来。无论是温故而知新,还是被有需求的人看见了,那都将是我的收获。哈哈哈 概要描述 个人简介哪些凸显/删除 技能应该怎么文字展现 项目经历怎么表达才能反客为主 学历与个人总结的重要性 排版主次顺序的多样选择 细节注意事项 不同的工作经验,简历的表达形式一定不一样!以下描述只针对工作3年以内工作经验的人。老鸟希望能够多指出一些建议方针,万分感谢。 每个人眼中的简历(只谈纸上部分) 职位身份不一样看待简历的点不一样,我个人理解如下要素 HR或许很关注一些硬性指标及工作背景,因为这样能在茫茫简历中快速筛选。 项目经理或许关注项目背景和技术匹配度。 老板,经理等.....(哈哈,我也不知道,可能...阅读全文

Golang:通过小程序获取微信 openid

为什么要获取小程序的 openid 在开发微信小程序的过程中,小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。那么这个用户身份标识就是 openid。 小程序获取 openid 的流程 那么小程序获取 openid 的流程具体如下,这里我简化了一下,因为我们只需要获取到 openid 即可,具体可以参考这里 我们需要在小程序中调用 wx.login() 获取 code 码,然后将这个 code 码发送给后端,后端带着这个 code 码和 appid,appsecret 向微信接口发起 http 请求获取 openid。 注意事项 在开发的小程序中的 AppID 一定要和后端使用的 AppID 保持一致,否则会获取 openid 失败 我们请求...阅读全文

博文 2020-03-23 21:32:44 Rollover

go语言基本语法——常量constant

一、常量的使用1.1 常量声明常量是一个简单值的标识符,在程序运行时,不会被修改的量。const identifier [type] = value 显式类型定义: const b string = "abc" 隐式类型定义: const b = "abc" package main ​ import "fmt" ​ func main() { const LENGTH int = 10 const WIDTH int = 5 var area int const a, b, c = 1, false, "str" //多重赋值 ​ area = LENGTH * WIDTH fmt.Printf("面积为 : %d", area) println() println(a, b, c) }运...阅读全文

2019 go区块链教程 go语言开发区块链教程实战项目视频 Golang编程从入门到区块链项目实践全套培训视频

001_Glang编程实战培训_Golang可以做什么.mp4 002_Glang编程实战培训_如何学习Golang更高效(1).mp4 003_Glang编程实战培训_如何学习Golang更高效(2).mp4 004_Glang编程实战培训_程序的基本概念.mp4 005_Glang编程实战培训_Go语言发展简史.mp4 006_Glang编程实战培训_Go语言的特性和快速体验.mp4 007_Glang编程实战培训_Golang开发工具介绍.mp4 008_Glang编程实战培训_windows下VSCode的安装和使用(1).mp4 009_Glang编程实战培训_windows下VSCode的安装和使用(2).mp4 010_Glang编程实战培训_Linux下VSCode的安装和使...阅读全文

博文 2019-12-25 01:32:55 hanghuaizhi

GO-Agent简单设置

1,下载安装包 官方地址:https://code.google.com/p/goagent/ 这里以版本1.7.9为例,现在有一个zip包。 1) 选择解压到当前文件夹 主要配置一下local文件里面的appid。 以及导入一下证书,如果你打算访问fb,推忒等。 2,配置appid 1) 打开local下面的proxy.ini 把上面的汉字部分替换成你申请的appid,可以配置多个,多个话,流量可以共享,google app engine是有流量限制的。 如果给你们的zip包里面的ini文件已经设置好了我以前的申请的2个appid的话,就不要改了,就用我的吧。 2) 导入根证书,并且信任它。 因为以后要访问的fb等网站的证书都是这个根证书签发的假冒证书,姑且信任吧。 选择信任的颁发机构 选...阅读全文

golang 读取文件的四种方式

参考 Go实战--golang中读写文件的几种方式 读文件 读取的文件放在file/test:也就是file包下的test这个文件,里面写多一点文件 读文件方式一:利用ioutil.ReadFile直接从文件读取到[]byte中 func Read0() (string){ f, err := ioutil.ReadFile("file/test") if err != nil { fmt.Println("read fail", err) } return string(f) } 读文件方式二:先从文件读取到file中,在从file读取到buf, buf在追加到最终的[]byte func Read1() (string){ //获得一个file f, err := os.Open("fi...阅读全文

博文 2019-07-05 11:32:45 w85278161

5个常用的Java镜像及其注意事项

![20140709134300-846982186.jpg](http://studygolang.qiniudn.com/151008/511a61c92a4d030e330ae41695b4a914.jpg) 在web后端开发中,Java语言一直是最受欢迎的语言之一,而作为Android开发的基础语言,Java在移动开发领域也有着惊人的受欢迎度,本文小编就将为大家介绍Java的5个具有代表性的Docker镜像,希望对大家学习Java语言有帮助。 1、STASH Stash 是 Git 代码管理和协作工具,允许将部署节点集群化,从而减少活动主机的停机时间,且不会对每个添加的节点造成性能影响。Stash 还集成了 JIRA(同一公司出品)的可追溯能力,并为团队提供协作工具...阅读全文

golang 数组、切片和字典添加/删除

## 注意事项 ### 数组定义长度后就固定了,没法删除和添加新元素 ###切片添加和删除 ```go package main import ( "fmt" ) func main() { v1 := []int{1, 2} //len=2, cap=2 v1 = append(v1,6,7) //增加一个 v1 = append(v1,6,7,8) //增加多个 fmt.Println(v1,len(v1), cap(v1)) //[1 2 6 7 6 7 8] len=7,cap=8 cap按照初始化的cap倍数增加 //删除一个元素 v2 := []int{1, 2, 3 ,4 ,5, 6} fmt.Println(v2,len(v2), cap(v2)) //[1 2 3 4 5 ...阅读全文

博文 2019-10-11 12:06:06 Foto_cj

5. golang的字符类型和字符串

一, 字符类型 golang中没有专门的字符类型,存放单个ascii字符,一般用byte保存,单个汉字一般用int来保存.字符类型一般用单''包起来,""是字符串. 字符类型的使用要点: 字符类型一般用单''包起来,因为""是字符串. 声明赋值语句里如果不指名类型,默认是int类型 字符的本质是整数,直接用println输出,是输出相对应的编码值 如果想输出相应字符,用printf("字符是%c, 字符对应的码值是%d") image.png 可以使用转义字符''来将特殊字符转义成特殊字符常量,比如'\n'表示换行,'\t'表示制表符, '\'表示一个, '''表示', '\r'表示回车 golang中字符和字符串使用的都是utf-8编码,没有乱码困扰. 字符类型相当于一个整数,所以可以运算...阅读全文

博文 2020-01-22 17:32:43 瓦灯_c6f0

Go语言程序设计的一些规则和注意事项

载:http://www.jincon.com/archives/257/ http://www.liguosong.com/2013/07/07/golang%E7%9A%84%E5%B0%8F%E6%80%BB%E7%BB%93/ 1、Go编程的风格,可以以组为单位进行申明变量和常量,以及加载包。 2、Go语言支持简单的函数,条件和循环风格,把括号都给省掉了 3、 大写字母开头的变量是可导出的,也就是其它包可以读取的,是公用变量;小写字母开头的就是不可导出的,是私有变量。 4、大写字母开头的函数也是一样,相当于class中的带public关键词的公有函数;小写字母开头的就是有private关键词的私有函数。 5、go语言是不需要以分号结尾的,这个和python非常类似。 6、Go语言是支...阅读全文

博文 2015-06-30 20:00:00 yugongpeng_blog

golang的项目结构 相关知识

### 项目结构 ``` ├── bin │ ├── login │ └── main ├── pkg │ └── darwin_amd64 │ └── login │ └── auth1.a ├── src │ ├── cfg │ │ └── testcfg.go │ ├── db │ │ ├── innerdb │ │ │ └── innerdb.go │ │ └── db.go │ ├── login │ │ ├── auth1 │ │ │ └── auth1.go │ │ ├── auth2 │ │ │ └── auth2.go │ │ └── login.go │ └── main.go └── Makefile ``` *** ### 两种包导入方式 ##### local im...阅读全文

Go语言中不同类型切片之间的相互转换

将 []T 切片转换为 []byte 类似C语言中将其他类型的数组转换为char数组: func ByteSlice(slice interface{}) (data []byte) { sv := reflect.ValueOf(slice) if sv.Kind() != reflect.Slice { panic(fmt.Sprintf("ByteSlice called with non-slice value of type %T", slice)) } h := (*reflect.SliceHeader)((unsafe.Pointer(&data))) h.Cap = sv.Cap() * int(sv.Type().Elem().Size()) h.Len = sv.Len...阅读全文

博文 2015-09-15 03:00:01 kuipertan

Go语言破解SSH服务器

**需求和思路分析** - 现在的很多小伙伴们都拥有了自己的云服务器了,lots of them! - 平时大家是怎么做服务器管理的呢?相信多数人都是通过SSH客户端连接过去的吧; - 无论PUTTY还是XShell,我们只需要一个登陆密码,就能轻松地登陆到远程服务器终端,然后对我们的服务器做任何事情; - 只需要一个密码就可以了! - Go语言有SSH连接的第三方库,参数自然是用户名、密码、远程IP和端口,而密码我们可以通过暴力枚举来进行破解; **建立靶机** 安装并运行SSH服务,以Ubuntu为例 ``` //安装SSH服务 sudo apt install openssh-server //查看服务状态 sudo systemctl status ssh //启动服务 sudo s...阅读全文

博文 2019-03-05 10:38:53 Amiee7

golang 中使用数组创建slice时的注意事项

golang中,slice是对固定长度数组的一段切片,其底层是用对数值空间的指针实现的。 在golang中当使用一个数组来创建slice时如: var array [5]int = [5]int{1,2,3,4,5} //切割出数组中的4个值,创建一个slice myslice := array[0:4] 打印array的值为: 1, 2, 3, 4, 5 打印mysqlice的值为: 1, 2, 3, 4 现在我们对myslice进行append操作 myslice = append(myslice,100) 打印array的值为: 1, 2, 3, 4, 100 打印mysqlice的值为: 1, 2, 3, 4, 100 现在我们再对myslice进行修改操作 myslice[0] =...阅读全文

博文 2015-06-17 20:02:25 happinessaflower

二、slice和数组的区别,map的注意事项 -go语言笔记

这次要说说array,slice,map。虽然前面已经说过了,但是实际使用中发现对这几个的使用和理解还是不够详细 现在再重新看看这几个类型 array类型 array是固定长度的数组,这个和C语言中的数组是一样的,使用前必须确定数组长度。但是和C中的数组相比,又是有一些不同的: 1 Go中的数组是值类型,换句话说,如果你将一个数组赋值给另外一个数组,那么,实际上就是将整个数组拷贝一份 2 如果Go中的数组作为函数的参数,那么实际传递的参数是一份数组的拷贝,而不是数组的指针。这个和C要区分开。因此,在Go中如果将数组作为函数的参数传递的话,那效率就肯定没有传递指针高了。这个是不是有点陷阱的感觉? 3 array的长度也是Type的一部分,这样就说明[10]int和[20]int是不一样的。 a...阅读全文

博文 2016-03-22 13:00:01 alvine008

go语言基础语法:变量的使用及注意事项

## 一、变量的使用 ### 1.1 什么是变量 变量是为存储特定类型的值而提供给内存位置的名称。在go中声明变量有多种语法。 所以变量的本质就是一小块内存,用于存储数据,在程序运行过程中数值可以改变 ### 1.2 声明变量 var名称类型是声明单个变量的语法。 > 以字母或下划线开头,由一个或多个字母、数字、下划线组成 声明一个变量 第一种,指定变量类型,声明后若不赋值,使用默认值 ```go var name type name = value ``` 第二种,根据值自行判定变量类型(类型推断Type inference) 如果一个变量有一个初始值,Go将自动能够使用初始值来推断该变量的类型。因此,如果变量具有初始值,则可以省略变量声明中的类型。 ```go var name = va...阅读全文

golang的sql.DB的一些注意事项及读写锁的总结

最近在写一个用于存储protobuf配置的配置管理服务,业务逻辑不难,2天就搞定,但是后续bug不少,也踩了很多坑,在这里记录下。 首先,一直以为golang内的sql模块是单链接的,所以一开始在每个goroutine内都open了一个DB,并写了一个连接池进行管理。后续发现是多此一举,白白写了好多代码。golang的sql模块自带连接池功能,在执行sql语句的时候才会分配连接,执行完毕后归还给连接池,所以假设用golang的sql模块,一个程序一个DB就行了。 既然有连接池的支持,那么也要注意千万不要泄露连接池的连接。假设你采用Query来执行查询语句,那么会返回一个sql.Rows结构,这个结构会占用一个连接,只有在遍历完才会自动关闭,所以最好是获得了Rows后执行一次Rows的Clos...阅读全文

[golang note] 工程组织

golang项目目录结构 ├─README ├─AUTHORS ├─ ├─ ├─ golang工程不需要任何的工程文件,一个完整的工程通常会在项目根目录下放置上面所示的文件或目录。它们的作用如下: √ README : 简单介绍本项目的目标和主要注意事项,通常第一次使用时应该先阅读此文档。 √ LICENSE : 本工程采用的分发协议,所有开源项目通常都拥有该文档。 √ src : src目录用于存放所有的源代码。 √ pkg : pkg目录用于存放编译后的包文件,无需手动创建。 √ bin : bin目录用于存放编译后的可执行文件,无需手动创建。 • src目录 √ 目录src用于包含所有的源代码,是go tool一个强制的规则。 ...阅读全文

博文 2016-05-07 15:00:00 heartchord

2019 go区块链教程 go语言开发区块链教程实战项目视频 Golang编程从入门到区块链项目实践全套培训视频

001_Glang编程实战培训_Golang可以做什么.mp4 002_Glang编程实战培训_如何学习Golang更高效(1).mp4 003_Glang编程实战培训_如何学习Golang更高效(2).mp4 004_Glang编程实战培训_程序的基本概念.mp4 005_Glang编程实战培训_Go语言发展简史.mp4 006_Glang编程实战培训_Go语言的特性和快速体验.mp4 007_Glang编程实战培训_Golang开发工具介绍.mp4 008_Glang编程实战培训_windows下VSCode的安装和使用(1).mp4 009_Glang编程实战培训_windows下VSCode的安装和使用(2).mp4 010_Glang编程实战培训_Linux下VSCode的安装和使...阅读全文

博文 2020-01-07 11:32:48 weipuhai

golang接口的实现以及注意事项。

package main import ( "fmt" ) type Animal interface { move() } type Human struct { i int } func (r Human) move() { // 注意 fmt.Println("人类行走") r.i++ } type Bird struct { i int } func (r *Bird) move() { fmt.Println("鸟类行走") r.i++ } func moveTest1(animal Animal) { animal.move() } // 虽然这个函数的定义没有错误,但实际上完全用不上! // 因为指向接口的指针,在接口实现类中,是无法转换的 func moveTest2(ani...阅读全文

博文 2015-06-17 20:04:00 eclipser1987

Golang unsafe包使用笔记

Golang unsafe包使用笔记 unsafe包简介 unsafe包提供了访问底层内存的方法。是用unsafe函数可以提高访问对象的速度。 应用场景 通常用于对大数组的遍历。 访问数组 package main import ( "fmt" "unsafe" ) func main() { array := []int{1, 2, 3} base := uintptr(unsafe.Pointer(&array[0])) size := unsafe.Sizeof(array[0]) ptr := unsafe.Pointer(base + 2*size) element := *(*int)(ptr) fmt.Println(element, array[2]) } 访问结构体 pac...阅读全文

博文 2017-06-15 13:04:07 tommwq

go form表单提交的坑,返回数据乱码

服务器内部出现了点儿问题,请联系客服进行解决,谢谢支持
同一个坑,跌倒两次。最后还是charles抓包对比网页请求参数才解决问题。 问题的原因是,服务器在response里面设置了Content-Encoding:gzip。 自身的原因还是没有把http请求的整个过程弄的很明白。 golang-中http请求头-accept-encoding-注意事项https://emacsist.github.io...阅读全文

博文 2019-05-31 17:34:41 benming

Go语言学习 第二章 第一个Go语言程序

### 1 Hello world > 下面就用IDE工具,开发第一个GO程序。 > > Go 语言源文件的扩展是 .go > > 具体步骤如下: > > ```go > package main > > import "fmt" > > func main() { > fmt.Println("Hello, World!") > fmt.Println("性感法师在线教学~") > } > ``` ### 2 编译过程 > 要执行 Go 语言代码可以使用命令或IDE来完成编译。 > > 命令如下: > > + 编译命令:go build hello.go > + 编译并运行命令:go run hello.go ### 3 代码分析 > + 每个Go源代码文件的开头都是一个package声明...阅读全文

博文 2019-11-26 16:08:41 masterL

搭建golang的beego注意事项

大家都知道,在学golang的时候,大家都会去关注谢大的beego快速开发架构。 首先,小弟是win7 32bit系统,在这里,我要把我学习golang的过程和小心得记录起来。 相信想学的人一定会早早安装好了go,简单轻量便捷,没有的话可以到这里下载。 在你安装好GO 1.2的时候,你会慢慢发现windows环境下你要做的事太多了。 如果仅仅只看教程来的话,我想你可能也会像我遇到一些问题。后面会提到。 这时候你又需要一个Golang的IDE,虽然大家都说sublime text比较好用,不过我之前也没用过,对这个不了解。所以我选择官方推荐的LiteIDE x20.1。 只所以会去写这篇文章,是因为我折腾了好久,对这过程有了点过度的兴奋在里面。 在你安装完GO后,你会发现在CMD下是可以识别G...阅读全文

博文 2015-06-17 20:02:18 yanmei004

压测注意事项

压测其实并非上线之前才进行,而是在开发之初就开始准备了。一般情况下在开发之前设计之时就应该明白哪些接口会面临高并发压力,所以在开发时就要按照能够承受高并发的标准进行开发,比如尽量减少数据库操作、采用连接池、逻辑尽量简单等等。如果逻辑确实复杂,就要采用异步处理来解决。 压测的目的 搞懂为什么要压测,这样在压测的时候才不会事倍功半,毕竟压测一次的成本还是蛮高的。压测其实有两个目的,一是测试应用在高并发情况下是否会报错,进程是否会挂掉;二是测试应用的抗压能力,预估应用的承载能力,为运维同学提供扩容的依据。 第一点很好理解,做好这一点就可以保证上线之后不出问题了。解释下第二点,我们都知道就是架构设计的再优秀,代码写的再好,应对高并发单实例始终是有限的。所以通常是在满足第一点的前提下,再根据可能到来的...阅读全文

博文 2017-09-10 07:34:54 闫大伯

字符串中的第一个唯一字符

题目描述 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 示例 s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事项 您可以假定该字符串只包含小写字母。 思路 可以使用一个数组记录每个字符出现的次数。 既然只有小写字母,所以只需要26个空间便够用了。 先遍历一次字符串,然后记录每个字符出现的次数。 再从头遍历一次字符串,若该位置的元素只出现一次,返回该索引即可。 Java代码实现 class Solution { public int firstUniqChar(String s) { //由于只包含小写字母,所以26就够用了 char[] chars = new char[26]; for (int ...阅读全文

博文 2020-03-14 21:32:46 youzhihua

学习编程,只跟对的人

代码需要优化但我 TMD 需要开发新需求啊!内心充满对学习的渴望但去掉打游戏和上班的时间我....!写过代码的行数加起来也过万了可是都没有!我将来是要当 CTO 的!如果您有这些想法,很遗憾,您还是个平庸的工程师,但也恭喜您,您同样也不甘平庸。想知道优秀的工程师是如何升级打怪的吗?想与做优秀的工程师一起工作吗?如果答案是肯定的,那让我来证明给你看你来对了地方!最优秀的工程师首先是一位最优秀的自我学习者,他们有非常强的学习意愿及最高效的学习方法。学习编程,第一步不是抱着一本书或跟着别人做的教程从头到尾啃一遍,第一步您就要开始思考。思考先从问正确的问题开始,因为正确的问题是你提高学习效率,理解编程语言根本原理的最好方法。比如:自然语言有语义和语法,计算机语言有吗?就像其他人可以理解你所说的话,计...阅读全文

博文 2019-01-23 11:34:46 幽一_e359

TODO:Golang指针使用注意事项

TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变;例子2是使用指针传递,会改变地址,从而改变地址。 在看例子3: 输出: map[a:aa b:bb] map[b:world a:hello] 发现什么了,TestMap前面没有加*,没有用指针,怎么也会改变值呢?因为map提供键值功能,用起来像指针引用的类型。类似这种功能的类型还有,数组切片,channel,interface。Go语言包这种指针引用类型,有兴趣可以去阅读一下源码,变量前面都有带“*”号,如果没有看看是否是map类型等。 值的拷贝,操作后不会影响到副本的值;而指针则会改变同一地址的所有变量名。例子4: 输出: tempByte...阅读全文

博文 2016-12-08 06:00:05 OneTODO