golang 订阅
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。 展开全文
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
信息
发布于
2009年
最新版本
1.14
发布组织
Google
中文名
Golang
属    性
编程语言
外文名
Golang
go简介
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后来追加了Windows系统下的实现。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。 目前,Go每半年发布一个二级版本(即从a.x升级到a.y)。 [1] 
收起全文
精华内容
参与话题
问答
  • golang

    千次阅读 2017-12-12 16:22:55
    Golang 优化之路——自己造一个日志轮子据我观察,基本没有人在用 Golang 原生的 log 包写日志。今天就讲一下如何通过200行代码封装一个功能完善的日志包。 Golang:使用自定义模板发送邮件几周前,我开始工作于一...

    Golang 优化之路——自己造一个日志轮子

    据我观察,基本没有人在用 Golang 原生的 log 包写日志。今天就讲一下如何通过200行代码封装一个功能完善的日志包。

    Golang:使用自定义模板发送邮件

    几周前,我开始工作于一个证券投资组合网站。虽然我只能使用 React 完成整个网站,但我决定使用 Go 来创建一个可以处理某些任务(例如发送 email)的 API 服务器,相信这是一个很好的做法。我其中的一个页面是一个 contact 页面,目前看起来像这样: 我想使用专门为…

    GO 语言学习资源整理

    作者整理的 Go 语言的学习资源,包括几个方面:
    1)在线学习教程:比较系统全面,非常适合新手入门学习;
    2)书籍;
    3)很多比较好的 Go 语言资源总结文档整理;
    4)Go 语言中文社区;

    go 入门参考资料和书籍

    足够初学者入门的 go 参考资料和书籍

    我是如何用 200 行代码写出一个 RESTful 微框架,并将功能拆分成 service(一)

    本文主要介绍了我是如何规划这个 RESTful 微框架,还有实现的步骤和用到的几个 Golang 的关键特性。

    用golang来编写cli程序吧,Happy~

    我是个Java开发者,做了很多的开源软件,经常会有在终端下提供命令行帮助程序的这种小需求,一般大家实现这个需求也就这么几种办法。
    编写批处理或者Shell(Windows和Linux需要写两次) 使用编程语言解决(golang、python都是不错的跨平台选择) 程序员都是懒人…

    一步一步教你写 BT 种子嗅探器 - 原理篇

    BT 种子爬虫教程

    可能是国内最火的开源项目 —— Go 篇

    截止目前开源中国收录了 44517 款开源项目,囊括了最热门的各类开源项目,而软件的评分在一定程度上代表了软件的质量和热度,近年 Go 语言排名一路飙升,因此本文整理了 Go 语言中评分最高并且收藏量超过 100 的几款项目,以供开发者选择和交流

    Go 语言之三驾马车

    Go语言的三个核心设计: interface 、goroutine 、 channel

    Go interface 详解(二) :定义和使用

    本系列是阅读 “The Go Programming Language” 理解和记录。

    Go 的文件操作

    总结了常用的 Go 文件操作,有代码示例。

    Go 语言的冷知识

    Go 语言的冷知识

    偶遇Golang,沉默良久

    刚从别的语言转到 golang,下面几个问题让我琢磨了好久

    golang 几道面试题

    整理一些面试题, 后面扩充

    用Golang编写机器人

    https://github.com/evolsnow/robot

    golang中国 网站源码

    https://www.golangtc.com/
    两个分支:
    master
    2.0

    go defer 的关键特性解读和示例

    go defer 的关键特性解读和示例

    golang 内存分析/动态追踪

    当你的golang程序在运行过程中消耗了超出你理解的内存时,你就需要搞明白,到底是 程序中哪些代码导致了这些内存消耗。此时golang编译好的程序对你来说是个黑盒,该 如何搞清其中的内存使用呢?幸好golang已经内置了一些机制来帮助我们进行分析和追 踪。

    Go 语言的 HTTP 中间件实现

    Go 语言的 HTTP 中间件实现

    go make 和 new 的区别

    go make 和 new 的区别

    在Go语言中使用JSON

    相对于JS, Golang中处理JSON真的好麻烦

    Awesome Go

    Go 包 beego。算起来用了三年beego了。当初选择用它的理由很简单,文档是中文的,开发者是中国的,交流方便。优点就是用得人较多,框架集成度高,工具比较多。不过从1.6开始兼容性大大降低开始对它无感。现在越来越觉得beego框架设计的太重,Golang的设计特点就是轻便,…

    Golang map 如何进行删除操作?

    map 删除某个key,内存是否会跟着删除?

    展开全文
  • Golang

    2018-08-12 16:53:15
    跟我一起写 Makefile(一) istio源码解析系列(一)-istio开发环境搭建 Golang学习–TOML配置处理
    展开全文
  • Go实战--golang中使用JWT(JSON Web Token)

    万次阅读 多人点赞 2019-07-18 19:33:38
    实战–go中使用cookie今天就来跟大家简单介绍一下golang中如何使用token,当然是要依赖一下github上的优秀的开源库了。首先,要搞明白一个问题,token、cookie、session的区别。token、cookie、session的区别Cookie ...

    生命不止,继续 go go go !!!

    之前写过关于golang中如何使用cookie的博客:
    实战–go中使用cookie

    今天就来跟大家简单介绍一下golang中如何使用token,当然是要依赖一下github上的优秀的开源库了。

    首先,要搞明白一个问题,token、cookie、session的区别。

    ##token、cookie、session的区别

    Cookie
    Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。

    内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。

    cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。

    cookie由服务器生成,发送给浏览器,浏览器把cookie以key-value形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。

    Session

    session 从字面上讲,就是会话。这个就类似于你和一个人交谈,你怎么知道当前和你交谈的是张三而不是李四呢?对方肯定有某种特征(长相等)表明他就是张三。

    session 也是类似的道理,服务器要知道当前发请求给自己的是谁。为了做这种区分,服务器就要给每个客户端分配不同的“身份标识”,然后客户端每次向服务器发请求的时候,都带上这个“身份标识”,服务器就知道这个请求来自于谁了。至于客户端怎么保存这个“身份标识”,可以有很多种方式,对于浏览器客户端,大家都默认采用 cookie 的方式。

    服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。

    Token
    token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库

    这里的token是指SON Web Token:
    JSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is digitally signed using JSON Web Signature (JWS).

    使用JWT进行认证
    JSON Web Tokens (JWT) are a more modern approach to authentication.

    As the web moves to a greater separation between the client and server, JWT provides a wonderful alternative to traditional cookie based authentication models.

    JWTs provide a way for clients to authenticate every request without having to maintain a session or repeatedly pass login credentials to the server.

    用户注册之后, 服务器生成一个 JWT token返回给浏览器, 浏览器向服务器请求数据时将 JWT token 发给服务器, 服务器用 signature 中定义的方式解码
    JWT 获取用户信息.

    一个 JWT token包含3部分:

    1. header: 告诉我们使用的算法和 token 类型
    2. Payload: 必须使用 sub key 来指定用户 ID, 还可以包括其他信息比如 email, username 等.
    3. Signature: 用来保证 JWT 的真实性. 可以使用不同算法
      这里写图片描述

    ##JWT应用
    上面说了那么多,接下来就是要coding了。
    用到的开源库:
    github.com/codegangsta/negroni
    Idiomatic HTTP Middleware for Golang
    http的一个中间件

    github.com/dgrijalva/jwt-go
    Golang implementation of JSON Web Tokens (JWT)

    github.com/dgrijalva/jwt-go/request

    这里分两个api,一个是通过login获取token,然后根据token访问另一个api。首先看看login是如何生成token的:
    当然首先是验证用户名和密码,为了节省篇幅这里只是代码片段,完整代码最后献上。

    	token := jwt.New(jwt.SigningMethodHS256)
    	claims := make(jwt.MapClaims)
    	claims["exp"] = time.Now().Add(time.Hour * time.Duration(1)).Unix()
    	claims["iat"] = time.Now().Unix()
    	token.Claims = claims
    
    	if err != nil {
    		w.WriteHeader(http.StatusInternalServerError)
    		fmt.Fprintln(w, "Error extracting the key")
    		fatal(err)
    	}
    
    	tokenString, err := token.SignedString([]byte(SecretKey))
    	if err != nil {
    		w.WriteHeader(http.StatusInternalServerError)
    		fmt.Fprintln(w, "Error while signing the token")
    		fatal(err)
    	}
    

    接下来就是验证token的中间件了:

    	token, err := request.ParseFromRequest(r, request.AuthorizationHeaderExtractor,
    		func(token *jwt.Token) (interface{}, error) {
    			return []byte(SecretKey), nil
    		})
    
    	if err == nil {
    		if token.Valid {
    			next(w, r)
    		} else {
    			w.WriteHeader(http.StatusUnauthorized)
    			fmt.Fprint(w, "Token is not valid")
    		}
    	} else {
    		w.WriteHeader(http.StatusUnauthorized)
    		fmt.Fprint(w, "Unauthorized access to this resource")
    	}
    

    最后完整代码:

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    	"log"
    	"net/http"
    	"strings"
    	"time"
    
    	"github.com/codegangsta/negroni"
    	"github.com/dgrijalva/jwt-go"
    	"github.com/dgrijalva/jwt-go/request"
    )
    
    const (
    	SecretKey = "welcome to wangshubo's blog"
    )
    
    func fatal(err error) {
    	if err != nil {
    		log.Fatal(err)
    	}
    }
    
    type UserCredentials struct {
    	Username string `json:"username"`
    	Password string `json:"password"`
    }
    
    type User struct {
    	ID       int    `json:"id"`
    	Name     string `json:"name"`
    	Username string `json:"username"`
    	Password string `json:"password"`
    }
    
    type Response struct {
    	Data string `json:"data"`
    }
    
    type Token struct {
    	Token string `json:"token"`
    }
    
    func StartServer() {
    
    	http.HandleFunc("/login", LoginHandler)
    
    	http.Handle("/resource", negroni.New(
    		negroni.HandlerFunc(ValidateTokenMiddleware),
    		negroni.Wrap(http.HandlerFunc(ProtectedHandler)),
    	))
    
    	log.Println("Now listening...")
    	http.ListenAndServe(":8080", nil)
    }
    
    func main() {
    	StartServer()
    }
    
    func ProtectedHandler(w http.ResponseWriter, r *http.Request) {
    
    	response := Response{"Gained access to protected resource"}
    	JsonResponse(response, w)
    
    }
    
    func LoginHandler(w http.ResponseWriter, r *http.Request) {
    
    	var user UserCredentials
    
    	err := json.NewDecoder(r.Body).Decode(&user)
    
    	if err != nil {
    		w.WriteHeader(http.StatusForbidden)
    		fmt.Fprint(w, "Error in request")
    		return
    	}
    
    	if strings.ToLower(user.Username) != "someone" {
    		if user.Password != "p@ssword" {
    			w.WriteHeader(http.StatusForbidden)
    			fmt.Println("Error logging in")
    			fmt.Fprint(w, "Invalid credentials")
    			return
    		}
    	}
    
    	token := jwt.New(jwt.SigningMethodHS256)
    	claims := make(jwt.MapClaims)
    	claims["exp"] = time.Now().Add(time.Hour * time.Duration(1)).Unix()
    	claims["iat"] = time.Now().Unix()
    	token.Claims = claims
    
    	if err != nil {
    		w.WriteHeader(http.StatusInternalServerError)
    		fmt.Fprintln(w, "Error extracting the key")
    		fatal(err)
    	}
    
    	tokenString, err := token.SignedString([]byte(SecretKey))
    	if err != nil {
    		w.WriteHeader(http.StatusInternalServerError)
    		fmt.Fprintln(w, "Error while signing the token")
    		fatal(err)
    	}
    
    	response := Token{tokenString}
    	JsonResponse(response, w)
    
    }
    
    func ValidateTokenMiddleware(w http.ResponseWriter, r *http.Request, next http.HandlerFunc) {
    
    	token, err := request.ParseFromRequest(r, request.AuthorizationHeaderExtractor,
    		func(token *jwt.Token) (interface{}, error) {
    			return []byte(SecretKey), nil
    		})
    
    	if err == nil {
    		if token.Valid {
    			next(w, r)
    		} else {
    			w.WriteHeader(http.StatusUnauthorized)
    			fmt.Fprint(w, "Token is not valid")
    		}
    	} else {
    		w.WriteHeader(http.StatusUnauthorized)
    		fmt.Fprint(w, "Unauthorized access to this resource")
    	}
    
    }
    
    func JsonResponse(response interface{}, w http.ResponseWriter) {
    
    	json, err := json.Marshal(response)
    	if err != nil {
    		http.Error(w, err.Error(), http.StatusInternalServerError)
    		return
    	}
    
    	w.WriteHeader(http.StatusOK)
    	w.Header().Set("Content-Type", "application/json")
    	w.Write(json)
    }
    

    通过postman进行验证:
    login:
    这里写图片描述

    根据获得token进行get请求:
    这里写图片描述

    这里写图片描述

    展开全文
  • Golang学习笔记 2.安装Go1.15版本

    万次阅读 2020-08-21 09:33:59
    安装Go1.15版本 大纲 Windows安装Go Linux安装Go MacOS安装Go Docker安装Go ...64位系统https://studygolang.com/dl/golang/go1.15.windows-amd64.msi 32位系统https://studygolang.com/dl/g..

    安装Go1.15版本

    大纲

    视频地址https://www.bilibili.com/video/BV14a4y177XG?p=3

    Windows安装Go

    1.点击下载go1.15版本的msi安装包

    如果机子不是老爷机,讲道理选64位通常没问题

    2.安装并选择一个安装目录

    默认情况下,会将Go安装在C:\Go目录下

    如果你不喜欢装在C盘,可以自定义安装目录

    然后一路next

    3.测试是否成功安装

    键盘按住win+r,在弹出窗口中输入cmd然后点确定,弹出的黑框框就是命令行(控制台)

    输入如下代码并回车

    go version

    如显示go version go1.15,证明可以进行愉快玩耍

    4.配置环境变量

    一般msi安装包会自动帮我们设置好相关的环境变量,这样才能在命令行里找到go这个程序

    如果上一步不能正常显示go的版本,那么我们还得自己配置环境变量

    假如go的安装目录是C:\Go,那么我们要把C:\Go\bin添加到PATH系统变量里

    Linux安装Go

    1.获取下载地址

    可以通过curl命令下载下来,比如下载64位的

    curl -O https://studygolang.com/dl/golang/go1.15.linux-amd64.tar.gz

    2.解压文件

    在下载好的压缩包同级目录执行以下命令,表示将tar.gz文件解压至/usr/local目录

    sudo tar -C /usr/local -xzf go1.15.linux-amd64.tar.gz

    3.配置环境变量

    然后我们将/usr/local/go/bin添加到PATH环境变量里,这样命令行才能找到go

    一般通过将下面代码追加export PATH=$PATH:/usr/local/go/bin/etc/profile文件的结尾来达到该目的

    sudo sh -c 'echo "export PATH=\$PATH:/usr/local/go/bin" >> /etc/profile'

    这样我们下次重新登录进计算机时,环境变量才会生效

    如果想立即生效,可以执行以下代码

    source /etc/profile

    MacOS安装Go

    可以通过brew来安装go

    brew install go

    或者直接下载安装包https://studygolang.com/dl/golang/go1.15.darwin-amd64.pkg,然后点击安装

    这样会默认安装至/usr/local/go目录下

    Docker安装Go

    用docker安装go,可能不是最好的方法,但一定是最方便的方法

    # 指定容器名为go115
    docker run -it --name go115 golang:1.15 /bin/bash

    你可以通过加上-v ~:/home/me参数,表示将家目录挂载到/home/me目录下,这样我们在容器内也能访问家目录

    通过输入exit来退出容器,以后重新进入容器,只需要

    docker start -i go115

    总结

    管他黑猫白猫,只要能安装成功就完事!

    展开全文
  • Golang学习笔记 3.第一个go程序

    万次阅读 2020-08-21 09:35:54
    hello golang go的两种运行方式 run编译运行 build编译打包后运行 总结 视频地址:https://www.bilibili.com/video/BV14a4y177XG?p=4 hello golang 据说所有编程语言初学者的第一个程序都是HelloWorld(你好...
  • <p>My code get file ...<p>code: <a href="http://play.golang.org/p/x-EyR2zFjv">http://play.golang.org/p/x-EyR2zFjv</a></p> <p>Get file is ok, but how to downloaded it in browser? <p>Thanks. </div>
  • Golang拥有一些不需要导入就能使用的内置函数,比如print、println: println(30624300, 30624770, 534202) // 30624300 30624770 534202 print(666, "数字人生好听") // 666数字人生好听 虽然都可以用于打印操作...
  • GOLANG打包

    千次阅读 2016-01-01 10:28:59
    GOLANG打包工程目录结构假设有个Go语言的工程myproject,目录结构如下myproject +-- src |-- myapp | +-- myapp.go +-- mylib +-- logger.go其中mylib目录是一个lib库,myapp是一个应用,其中引用了mylib库。...
  • 指针与函数参数的引用传递 大纲 指针简介 获取值在内存中地址 根据地址取值 参数的引用传递 ...在Golang中,指针操作是很简单的,只需要记住两个符号: &(取地址) *(根据地址取值).
  • <p>I'm new to golang and I'm trying to get the image size of all the images listed in a directory. That's what I've done <pre><code>package main import ( "fmt" "image" _ "image/jpeg" "io/ioutil...
  • Golang系列(五)之Golang指针

    万次阅读 2017-09-07 12:52:06
    1. 指针的概念 概念 说明 变量 是一种占位符,用于引用计算机的内存地址。可理解为内存地址的标签 指针 表示内存地址,表示地址的指向。指针是一个指向另一个变量内存地址的值 &amp;... 取地址符,例如:{...
  • golanggolang unrecognized import path

    千次阅读 2018-04-26 11:06:48
    golanggolang unrecognized import path 很久没有更博客了,就是最近太懒了。 第二天安装goquery的时候就遇到了这个错,想着拿出来给大家分享一下,希望能帮到大家 原因 多半是被墙了 解决方法 方法一...
  • golang交叉编译

    万次阅读 2014-09-25 09:58:26
    golang传的很牛X,但不能交叉编译,对我来说一点用都没有,有个开源项目是用golang写的,如果不能在arm上用,那么我只能将它“翻译”成C,再集成到我的产品中,但我没有这个时间。好在交叉编译最后还是成功了。1. ...
  • 这里介绍一下,golang如何生成二维码,当然是面向github编程了。QRCode百度百科: QR Code码,是由Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可...
  • 使用goLang的LDAP认证

    2016-10-06 18:32:06
    <p>I am trying to authenticate with LDAP server using goLang also trying to search the user. I am new to goLang and LDAP so I pulled GitHub code. While trying with below code, I am getting error in ...
  • <p>I'm trying to implement a default value according to the option 1 of the post <a href="http://joneisen.me/development/code/2013/06/23/golang-and-default-values.... But when I try to do <code>go ...
  • golang select

    万次阅读 2020-09-16 23:24:13
    golang 的 select 就是监听 IO 操作, 当 IO 操作发生时,触发相应的动作 每个case语句里必须是一个IO操作, 确切的说,应该是一个面向channel的IO操作
  • Golang 发送邮件

    万次阅读 2016-11-09 18:07:24
    简述Go 提供了一个 smtp(Simple Mail Transfer Protocol - 简单邮件传输协议)库作为其网络包的一部分,“net/smtp”公开了一些可立即使用的有用功能。Gomail - 一个比较成熟的第三方包,提供了一个快速、简单的...
  • cannot find parkeg "golang.org/x/crypto/acme/autocert" in any of:
  • Golang 环境搭建

    千次阅读 2016-11-09 17:18:25
    Golang』(Go 语言,以下简称 Go)是 Google 开发的一种编译型、可并行化、并具有垃圾回收功能的编程语言。罗布·派克(Rob Pike)、罗伯特·格瑞史莫(Robert Griesemer)、及肯·汤普逊于 2007 年 9 月开始设计 ...
  • 想在公司推广Golang吗-Golang之美

    千次阅读 2016-09-22 12:03:52
    我们组的小伙伴们在融合了心理学的基础上,写出了这一套高大上的推广文案,想要向老板、朋友推广Golang的话,甩这个文案甩他们脸上就对了。 地址: https://github.com/corego/gobeauty 觉得喜欢的朋友们,不要忘...
  • Golang Web 实战

    千次阅读 2019-05-30 23:30:10
    本 Chat 介绍的是,如何使用 Golang 搭建健康的 Web 业务后端,并引入常见的后端技术栈概念(Postgres、Redis、MongoDB、Docker),希望可以引起读者的共鸣。 本期目标: 提高 Golang 在后端语言中的认知度 对刚入职...
  • <p>I am fairly new to Golang. I know there is Struct in Golang. But for all I know, you have to define struct <pre><code>type Circle struct{ x,y,r float64 } </code></pre> <p>I am wondering how you...
  • golang map

    千次阅读 2020-09-04 23:34:31
    map很重要
  • [golang]通过github下载golang官方工具包

    千次阅读 2020-03-16 15:36:25
    如果无法科学上网, 国内网络将无法访问 golang.org。而golang的官方工具包(golang.org/x/)这种情况下也无法直接安装,会给开发工作带来很大的麻烦。以下简单介绍如何通过github迂回解决这个问题 (golang库其镜像托管...
  • <a href="https://stackoverflow.com/questions/24122821/go-golang-time-now-unixnano-convert-to-milliseconds">Go / golang time.Now().UnixNano() convert to milliseconds?</a></p> <p>to convert to ...
  • golang定时器函数

    千次阅读 2016-09-28 17:42:34
    tick := time.Tick(1 * time.second)表示每隔一段生产一条数据到tick通道中。boom := time.After(500 * time.Millisecond)表示在一段时间之后产生一条数据到tick通道中,不会持续产生。func timetick() { ...
  • Golang 小技巧

    千次阅读 2016-06-16 22:17:04
    1.前言Golang 开发过程中的一些小技巧在这里记录下。2.内容1)包的引用经常看到Golang代码中出现 _ "controller/home" 类似这种的引用,这里的下划线有什么作用呢? 其实默认每个文件都有一个init函数,加下划线表示...
  • I have a little bit expirience in Golang and I found few libraries. Can you advise the best library for working with RTSP at Go? My tasks are very simple: checking for connection by TCP to the camera...
  • golang sleep

    万次阅读 2017-10-04 16:13:38
    golang的休眠可以使用time包中的sleep。 函数原型为: func Sleep(d Duration) 其中的Duration定义为: type Duration int64 Duration的单位为 nanosecond。为了便于使用,time中定义了时间常量: const ( ...

空空如也

1 2 3 4 5 ... 20
收藏数 91,848
精华内容 36,739
热门标签
关键字:

golang