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

golang 使用 strings.Split 切割的注意

s := strings.Split("", "") fmt.Println(s, len(s)) s = strings.Split("abc,abc", "") fmt.Println(s, len(s)) s = strings.Split("", ",") fmt.Println(s, len(s)) s = strings.Split("abc,abc", ",") fmt.Println(s, len(s)) s = strings.Split("abc,abc", "|") fmt.Println(s, len(s)) fmt.Println(len("")) fmt.Println(len([]string{""})) str := "" fmt.Println(str[0]...阅读全文

博文 2014-10-04 19:27:43 984195889

Golang中使用set

Go中是不提供Set类型,Set是一个集合,set里的元素不能重复。 两种思路 2 basic set implementations 使用map实现 在Golang中通常使用map来实现set,map中的key为唯一值,这与set的特性一致。 简单实现,如下: set := make(map[string]bool) // New empty set set["Foo"] = true // Add for k := range set { // Loop fmt.Println(k) } delete(set, "Foo") // Delete size := len(set) // Size exists := set["Foo"] // Membership map的value值是布...阅读全文

博文 2020-03-26 07:32:40 DevilRoshan

golang mysql中timestamp,datetime,int类型的区别与优劣

golang time: https://golang.org/pkg/time/ golang中time包用法 http://blog.csdn.net/chenbaoke/article/details/41519193 首先 DATETIM和TIMESTAMP类型所占的存储空间不同,前者8个字节,后者4个字节,这样造成的后果是两者能表示的时间范围不同。前者范围为1000-01-01 00:00:00 ~ 9999-12-31 23:59:59,后者范围为1970-01-01 08:00:01到2038-01-19 11:14:07。所以可以看到TIMESTAMP支持的范围比DATATIME要小,容易出现超出的情况. 其次,TIMESTAMP类型在默认情况下,insert、update ...阅读全文

博文 2016-03-04 08:00:01 scut1135

go语言scan空值报错

http://xmarker.blog.163.com/blog/static/22648405720144743531420/ 今天使用go语言时,如果数据库里有空值,扫描出来报错,其中环境是这样的,数据库为postgresql9.3.2(其实和数据库无关),数据库里的数据如下: db_public=> \d t_tmp Table "usr_public.t_tmp" Column | Type | Modifiers --------+-----------------------------+----------- id | integer | not null name | character varying(30) | remark | text | time | timesta...阅读全文

博文 2016-04-19 18:00:01 leonpengweicn

golang语法总结(八):类型零值、类型别名、类型转换

类型零值 变量声明为某种类型后的值就为该类型的零值,它不是空值。通常数值类型默认为0,bool为false,string为空字符串 类型别名 比如: type text stringfunc main() { var t text = "hello world" fmt.Println(t)} 类型转换 Go语言不存在隐式转换,必须显式转换,并且只能在两种相互兼容的类型间转换,转换示例: a := 3.14b := int(a)fmt.Println(b)var c int32 = 256var d = float64(c)fmt.Println(d...阅读全文

博文 2016-02-22 14:00:07 QQ245671051

Go数据结构之集合

一、什么是集合集合就是不同对象的无序聚集。那么链表和集合有什么关系呢?我们来变个魔术。如下图是各种颜色组成的链表:​下面我们一步步把链表变成集合。第一步砍去链接​第二步去掉重复​第三步放到一个框里摇一摇就成集合了​可以看出集合有这些特点:无序:链表去掉链接,就是去掉元素间有序状态。不重复:去掉重复的玫红色。虽然说集合是一种数学概念,但在实际生活中无处不透露着集合。比如一个班级的学生是一个集合。班级里的男生又是一个集合。二、集合的结构​大卫哥这里为了简化概念的描述,继续用单链表来表示集合,但是在对集合做计算的时候单链表并不合适,数据量大的时候它的弊端就会显现,在讲到后面的数据结构和算法的时候,我们再回头来完善前面讲的数据接口的实现。三、接口说明及实现​2、Init初始化集合,本质是初始化链表。...阅读全文

博文 2017-12-09 01:29:48 rhan-zz

代码片段 - Golang 实现集合操作

package main import ( "fmt" "sort" "sync" ) type Set struct { sync.RWMutex m map[int]bool } // 新建集合对象 func New(items ...int) *Set { s := &Set{ m: make(map[int]bool, len(items)), } s.Add(items...) return s } // 添加元素 func (s *Set) Add(items ...int) { s.Lock() defer s.Unlock() for _, v := range items { s.m[v] = true } } // 删除元素 func (s *Set) Remove(it...阅读全文

博文 2016-09-04 14:00:00 golove

gorm中的公共方法判断reflect.Value的值是否为空值

``` func isBlank(value reflect.Value) bool { switch value.Kind() { case reflect.String: return value.Len() == 0 case reflect.Bool: return !value.Bool() case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return value.Int() == 0 case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr...阅读全文

博文 2017-12-23 10:48:19 fightingforbing

空中金融可靠吗?投资理财选空中金融可以吗?

  对于关注投资理财的朋友来说,互联网金融理财肯定是一种非常不错的模式。这种理财模式起点低、收益高,因而很受年轻人的青睐。不过,市面上的互联网金融理财平台非常多,我们该如何选择呢?最近比较出名的空中金融可靠吗https://www.kongzhongjr.com/?投资理财选空中金融可以吗?   空中金融可靠吗?投资理财选空中金融可以吗?空中金融是空中网针对当下日益增长的互联网金融业务需求,结合自身多领域跨界大战略而打造的综合金融服务平台。依托空中网作为上市公司的有力背书以及完善强大的资产管理能力,目前已迅速崛起成为新一代互联网金融平台中的翘楚。所以,空中金融还是值得推荐的。   空中金融可靠吗?空中金融可不可靠,与其风控措施密切相关。空中金融PEM复合风控系统在市面上很出名。根...阅读全文

Golang iris 解决CORS跨域问题

先创建一个函数用来统一处理请求头 // Cors func Cors(ctx iris.Context) { ctx.Header("Access-Control-Allow-Origin", "*") if ctx.Request().Method == "OPTIONS" { ctx.Header("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,PATCH,OPTIONS") ctx.Header("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization") ctx.StatusCode(204) return } ctx.Next() } 然后在初始...阅读全文

博文 2019-12-16 11:32:45 韬大帅

【Go语言】【5】GO语言变量

变量也是语言的基本元素,与GO语言的常量类似,常量使用const关键字修饰,而变量使用var关键字修饰,变量声明的形式为var variableName variableType一、变量声明var age intvar phone intvar name stringvar address stringvar salary float64var consume float64var array [10]intvar frieds [20]string每个变量声明都使用一个var,上面的例子中能否能减少var的个数吗?前面说过GO是最懂程序员的,所以当然可以简写为:var ( age int phone int name string address string salary float64...阅读全文

博文 2017-02-09 15:58:07 qingkechina

beego controller响应json时如何忽略空值

beego controller响应json时如何忽略空值:如 ``` { "Id": 0, "Account": "admin", "Password": "", "RoleId": 0, "Status": "", "CreateTime": "0001-01-01T00:00:00Z", "CreateUserId": 0, "UpdateTime": "0001-01-01T00:00:00Z", "UpdateUserId": 0 } ``` 零值数据不返回 只返回 `{“Account”:"admin"}` 代码: ``` func (this *AdminManageController) GetCurrentSysAdm...阅读全文

golang中的defer panic recover

大家都知道golang里的panic相当于其他语言里的throw,而recover相当于其他语言里的cacth,可是由于golang的recover机制要求必须在defer的函数里才能执行catch panic 大概意思如下 func protect(g func()) { defer func() { log.Println("done") // Println executes normally even if there is a panic if x := recover(); x != nil { log.Printf("run time panic: %v", x) } }() log.Println("start") g() } 这似乎跟try catch没啥区别,但是如果我们...阅读全文

博文 2014-10-04 19:26:12 HopingWhite

刚来注册就发现一个bug

在注册用户名已经存在时,提交出现这样一个神奇的bug:填写一个已经存在的用户名,然后提交,用firebug看到:POST数据给:http://studygolang.com/account/register.json ,这个地址返回的是: {"errno": 1, "error":""} 返回的JSON格式里 error是空字符,应该提示:“用户名已存在!”, 希望尽快修正...阅读全文

Go如何处理zip中的中文文件名

Go的标准库已经自带了zip的库. 不过zip包在处理内部文件名时, 默认是utf8编码的. 对于Windows中文用户, 生成和读取zip内部文件名默认是GBK编码的. 因此, 在处理涉及GBK的文件名时需要做一个转换. Go语言官方的 go.text 子标准库已经支持各种编码, 下面是utf8转GBK的函数: import "golang.org/x/text/encoding/simplifiedchinese" func utf8ToGBK(text string) (string, error) { dst := make([]byte, len(text)*2) tr := simplifiedchinese.GB18030.NewEncoder() nDst, _, err :...阅读全文

博文 2015-05-18 12:38:08 chai2010

go 正则的使用

定义一个正则表达式 调用regexp 下面的几个方法并传入一个正则的字符串形式的参数定义一个正则表达式例如 :regexp.MustCompile("\d") Compile CompilePOSIX MustCompile MustCompilePOSIX 方法概述 regexp包中有16种方法来匹配正则表达式并标识匹配的文本,他们的名称可以使用这个正则来匹配 Find(All)?(String)?(Submatch)?(Index)? 如果存在 All 该函数将匹配整个表达式的连续非重叠匹配。方法返回的是一个包含非all 值得切片,这个方法使用一个额外的参数整数参数 n, 如果n> = 0,则该函数最多返回n个匹配项/子匹配项;否则,它返回所有匹配项/子匹配项。 如果存在 String ...阅读全文

博文 2019-10-27 21:02:39 曹飞龙

如何使用Python删除文件、目录

在进行Python项目实战(http://www.maiziedu.com/course/python/)时,会经常使用到Python删除文件、删除目录等操作方法,今天小编详细的分析了涉及Python文件操作的各种方法,需要的朋友可以参考下 下面来看一下python里面是如何删除一个文件及文件夹的~~ 首先引入OS模块 import os 删除文件: os.remove() 删除空目录: os.rmdir() 递归删除空目录: os.removedirs() 递归删除目录和文件(类似DOS命令DeleteTree): 方法1: # Delete everything reachable from the directory named in 'top', #...阅读全文

golang template模版如何判断变量是否存在/指针是否为空

golang template模版如何判断变量是否存在/指针是否为空 也就是语法{{if .Var}}的含义。 其含义是变量Var是否为真值,判断逻辑根据变量的类型,和golang语言本身判断变量是否为真的逻辑是一样的。 数字型:值不等于零 字符串:不是空串 指针类型:不为空 布尔类型:为True值 比较常用的是指针类型是否为空(对于其他基本类型来说,可以通过简单的比较运算来完成),语义上说就是属性是否存在,举个例子来说: package main import ( "os" "log" "text/template" ) type Address struct { City string Street string Apt int } func main() { templateText ...阅读全文

博文 2020-01-06 05:32:43 CodingCode

golang併發數量及超時控制

這裡介紹一個控制golang併發數量的包gowork,當然都是可以自己實現的,只是每次去實現比較麻煩罷了。 如果只是啟一個goroutine那就沒有必要使用,當然這個包也是支持的。 實現原理: 用戶告知要啟用的併發數量,然後包內會啟動相當於併發數量的一個工作池。這樣之後程序猿只要往工作池裡面發任務就可以了。 當然你需要的是實現你的worker。原型: type WorkFunction func(req interface{}, res interface{}) 還可以實現異常處理的函數,原型和worker一樣,同時在使用的時候gowork會自動將任務參數req對應的傳給異常處理函數,你需要做的是通過req獲取異常處理結果,當然你也可以不要這些結果。 使用: 控制同時併發數量為5,new一個...阅读全文

用go语言和org-mode搭建自己的博客环境

2012-12-23 用go语言和org-mode搭建自己的博客环境 设计目标 操作流程 目录格式 博文头部meta格式 功能实现 设计目标 半静态的博客。尽量是self-contain的,没有数据库依赖。只要完全基本功能。使用博文头部有元信息来分类别,tag等,go语言后台动态生成按类别浏览。 静态部分包括: css样式文件 各种显示的模板 大多数博文都是由org文件使用emacs生成的html 动态部分包括: 由go语言程序生成rss的feed 管理博文的分类,tag,等 评论等功能后期再考虑 操作流程 手写org格式的博文。文件格式有特殊头部存储博文json格式的meta信息。然后用emacs加工,将org文件转化为html导入到pub/post目录,只生成body部分。 go语言写后...阅读全文

博文 2015-03-16 11:50:39 zenlife

Golang 中的 面向对象: 方法, 类, 方法继承, 接口, 多态的简单描述与实现

前言: Golang 相似与C语言, 基础语法与C基本一致,除了广受争议的 左花括号 必须与代码同行的问题, 别的基本差不多; 学会了C, 基本上万变不离其宗, 现在的高级语言身上都能看到C的影子; Golang 中的 面向对象 什么是面向对象? 面向对象是一种编程思想, 并不是某一种开发语言独属; 那什么是对象? 对象,指的是客体。所谓客体是指客观存在的对象实体和主观抽象的概念。(扩展阅读) 简单理解就是, 抽象一个拥有多重属性的客体, 将共有属性抽离出来为一个类, 以便实现定义多个客体的功能。 面向对象有哪些特征? 面向对象 通常包括三个特征 继承, 封装 和 多态; (简单理解) 继承: 由子类继承父类的属性/数据/方法等; 封装: 以最简单的函数形式将方法展示出去, 而不需要使用者知...阅读全文

博文 2018-07-21 00:30:02 gettolive

leetcode 55. 跳跃游戏

给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。 示例 2: 输入: [3,2,1,0,4] 输出: false 解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。 这道题是刚刚做的,可以用贪心的思路。 我分享这道题的原因是因为它更适合反过来想。我们可以从数组的倒数第二个个元素看起,每次往前遍历,如果当前的元素能够到达最后一个位置,那么我们把当前位置开始到最后全部“切断”,以当前元素为最后一个元素,重复第一次...阅读全文

博文 2019-04-17 15:34:45 算法瘾士

Golang最最最基础语法

这一节看下Golang的基础语法...嘛...如果懒得看的话,记得以下两点就好: 1 Golang的变量、函数参数等等涉及到类型的声明,都是变量名写在前,类型写在后的(和正统C系语法刚好相反) 2 循环语句for通吃所有 然后,就开始啦~ Go语言基本语法 package main import ( "fmt" ) func main() { fmt.Println("Hello Azen٩(●˙▿˙●)۶…⋆ฺ") } 作用:使用fmt这个库运行输出 定义变量 var 关键字 func variableZeroValueDefine() { var a int var s string fmt.Printf("%d %q\n", a, s) } 知识点: 变量名写在前面,变量类型写在后面 ...阅读全文

博文 2018-07-11 20:34:42 Azen

golang项目结构

一、概述 golang更新了环境变量,导致整个goproject的结构改变: 1 [root@node175 goproject]# tree -L 2 2 . 3 ├── bin 4 │ └── demo 5 ├── pkg 6 │ └── linux_amd64 7 └── src 8 ├── demo 9 10 5 directories, 1 file 11 12 项目源码在src下,可以包含多个project: demo1, demo2 等等 13 此时bin, pkg均为空目录; 14 cd src && go install demo 15 #此时, 生成了demo项目的lib文件在如下目录中 16 [root@node175 src]# ll ../pkg/linux_amd...阅读全文

博文 2017-09-26 18:30:01 chris-cp

Win 7 下一种IE首页恶意篡改的解决(go2000.com/?XX)

笔者前些日子因没有注意,在安装软件时被其捆绑的流氓软件将IE主页恶意篡改了http://go2000.com/?52。在IE属性里设回about:blank(空白页)后,下次启动又被自动篡改。检查注册表发现HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main中的Start Page项被改成了http://go2000.com/?52,更改键值提示没有权限,更改Main的权限控制提示拒绝访问。Win7 优化大师强行锁定首页为about:blank,但注册表中的键值始终无法改变。 今天终于研究出一种方法可以修复此问题,特此分享: 1、以管理员身份运行注册表编辑器regedit。 2、检查HKEY_CURRENT_USER/Soft...阅读全文

博文 2016-02-08 23:00:01 qianyun6

golang[函数篇]

package main func average(values []float64) float64{ if len(values) == 0{ return 0 } sum := 0.0 for _,value := range(values){ sum += value } return sum/float64(len(values)) } func main(){ value := []float64{10,10,12,14,15} println(average(value)) } package main func swap(a,b int)(int,int){ if(a阅读全文

博文 2014-10-04 19:26:06 xloogson

go map的使用

欢迎关注go语言微信公众号 每日go语言 golang_everyday go中map用于存储健值对。map格式: map[KeyType]ValueType 声明一个map,键为字符型,值为int型: m := make(map[string]int) map中添加值: m["a"] = 1 获取map中值: fmt.Println(m["a"]) 输出结果:1 获取值同时判断是否存在该值 v,exists := m["a"] fmt.Printf("%d %t",v,exists) 输出: 1 true 遍历map for key, value := range m { fmt.Println("Key:", key, "Value:", value) } 输出: Key: a Valu...阅读全文

博文 2015-05-19 03:00:11 baiyuxiong

用go语言和org-mode搭建自己的博客环境

2012-12-23 用go语言和org-mode搭建自己的博客环境 设计目标 半静态的博客。 尽量是self-contain的,没有数据库依赖。只要完全基本功能。 使用博文头部有元信息来分类别,tag等,go语言后台动态生成按类别浏览。 静态部分包括: css样式文件 各种显示的模板 大多数博文都是由org文件使用emacs生成的html 动态部分包括: 由go语言程序生成rss的feed 管理博文的分类,tag,等 评论等功能后期再考虑 操作流程 手写org格式的博文。文件格式有特殊头部存储博文json格式的meta信息。 然后用emacs加工,将org文件转化为html导入到pub/post目录,只生成body部分。 go语言写后台,将pub/post目录的文件结合template/p...阅读全文

博文 2015-03-16 11:49:36 zenlife

golang函数方法

定义 Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。语法格式如下: func (variable_name variable_data_type) function_name() [return_type]{ /* 函数体*/ } package main import "fmt" type Circle struct { radius float64 } func main() { var c Circle c.radius = 10 fmt.Println("圆的面积 = ", c.getArea()) } func (c Circle) getArea() float64...阅读全文

博文 2019-12-31 06:32:42 程序小白菜

go语言学习心得

目的 在新单位工作已经快1年,这边使用了go语言作为主要的开发语言。在这里记录在工作中使用该语言遇到的问题、心得,避免以后再踩坑。 各种例子 1、从一个map对象中根据key获取值。其中map的通用类型可以定义为:map[string]interface{} 前提条件存在一个上述类型的map定义 var m map[string]interface{} = make(map[string]interface{}) 可以有两种方式来获取对象 (1). 方法一 value, ok := m[key] (2). 方法二 value := m[key] 问题:value的类型为interface{},可以为值类型或指针类型,如果给定的key在map中不存在,对于不同value类型的结果会是怎样的? ...阅读全文

博文 2016-03-25 23:00:01 lingyun1981

golang tips

回调函数的用法 //一个记录日志的类型:func(string) type saveLog func(msg string) //将字符串转换为int64,如果转换失败调用saveLog func stringToInt(s string, log saveLog) int64 { if value, err := strconv.ParseInt(s, 0, 0); err != nil { log(err.Error()) return 0 } else { return value } } //记录日志消息的具体实现 func myLog(msg string) { fmt.Println("Find Error:", msg) } func main() { stringToInt(...阅读全文

博文 2014-10-04 19:26:45 kuerant

Golang Interface & Function 对象扩展

Interface & Function 对象扩展 Golang 的函数即对象,和 JavaScript 一样,像结构体可以定义方法一样,函数对象也可定义方法。 package main import ( "fmt" ) type adder interface { add(string) int } type handler func(name string) int // 函数即对象,和 JavaScript 一样 func (h handler) add(name string) int { // 实现函数对象的 handler.add() 方法 value := h(name) + 1 fmt.Printf(`handler.add("%v") %v %s`, name, value...阅读全文

博文 2019-10-02 19:32:46 aside section ._1OhGeD

【原创】树莓派3B开发Go语言(四)-自写库实现pwm输出

在前一小节中介绍了点亮第一个LED灯,这里我们准备进阶尝试下,输出第一段PWM波形。(PWM也就是脉宽调制,一种可调占空比的技术,得到的效果就是:如果用示波器测量引脚会发现有方波输出,而且高电平、低电平的时间是可调的。) 这里爪爪熊准备写成一个golang的库,并开源到github上,后续更新将直接更新到github中,如果你有兴趣可以简书和我联系。 github.com/dpawsbear/bear_rpi_go 一、树莓派的PWM 我在很多的教程中都看到说树莓派的PWM(硬件)只有一个GPIO能够输出,就是 GPIO1。这可是不小的打击,因为我想使用至少四个 PWM ,还是不死心,想通过硬件手册上找寻蛛丝马迹,看看究竟怎么回事。 手册上找寻东西稍等下讲述,这里先提供一种方法测试 树莓派3...阅读全文

博文 2017-08-31 14:05:03 爪爪熊大坏蛋

golang中使用proto3协议导致的空值字段不显示的问题处理方案

最近在使用grpc协议的时候,由于采用的是Proto3协议,在查找记录信息的时候,由于某些字段会有默认空值,导致在通过协议调用后,返回的json结构中并没有这些字段,虽然作为前端使用没有太大的问题,但是在更多的使用场景中,我们更需要知道该服务返回的确切字段,以便于能够做相应处理,尤其是编译型语言 具体的使用出现场景如下 type MemberResponse struct { Id int32 `json "id"` Phone string `json "phone"` Age int8 `json "age"` } //获取用户信息的接口 func (m *Member) GetMember(req *proto.MemberRequest, resp * proto.MemberRes...阅读全文

博文 2019-10-16 11:02:43 Dal_Zale

golang语法总结(四):基本数据类型

整型有:int8/uint8、int16/uint16、int32/uint32、int64/uint64、int/uint、byte、rune 1) 数字表示占多少位,uint的u表示unsigned,有点C语言基础的都知道是什么意思,这里就不赘述了; 2) int/uint会根据运行平台可能为32位或64位; 3) rune相当于int32的别名 4) byte相当于uint8的别名 浮点型有:float32、float64 float64相当于其它某些语言的double,即双精度浮点型 字符串:string 布尔型:bool 只有true或false,不能用数字代替(比如C语言就允许0代表false,非0代表true) 空值:nil 有些语言是null或NUL...阅读全文

博文 2016-02-25 10:00:01 QQ245671051

go 回调函数 & 匿名函数

package main import "fmt" // go 回调函数 func main() { /* 匿名: 没有名字 匿名对象: 匿名函数: 函数没有名字 通常只能使用一次。 定义的时候直接使用 */ fun1 := func(a, b int) int { fmt.Println("a:", a, "b:", b) return a * b } res2 := oper(1, 2, fun1) fmt.Println(res2) // 3 } func oper(m, n int, fun func(int, int) int) int { return fun(1, 2) ...阅读全文

博文 2020-06-07 16:32:43 小兵

golang函数闭包

定义 Go 语言支持匿名函数,可作为闭包。匿名函数是一个"内联"语句或表达式。匿名函数的优越性在于可以直接使用函数内的变量,不必申明 package main import "fmt" func getSequence() func() int { i := 0 return func() int { i += 1 return i } } func main() { /* nextNumber 为一个函数,函数 i 为 0 */ nextNumber := getSequence() /* 调用 nextNumber 函数,i 变量自增 1 并返回 */ fmt.Println(nextNumber()) fmt.Println(nextNumber()) fmt.Println(next...阅读全文

博文 2019-12-31 06:32:42 程序小白菜

一个神秘现象引发对beego框架的思考

小强最近在项目中遇到了一个很奇怪的问题:在整改日志规范时,为了避免影响现有的代码结构以及改动尽可能小的前提下,在调用记日志的SDK处将某一个字段值首字母改为大写,代码示例如下: fmt.Println("--------SayHello begin------------") //项目中这里的a实际是作为参数传入,只是可能为空串,不为空串,这样写肯定没问题 a := "" b := strings.ToUpper(a[:1]) + a[1:] fmt.Println("b is ", b) fmt.Println("--------SayHello end------------") this.Ctx.Output.Body(this.Ctx.Input.RequestBody) 项目中这里...阅读全文

博文 2019-10-18 01:32:50 aside section ._1OhGeD

一个神秘现象引发对beego框架的思考

小强最近在项目中遇到了一个很奇怪的问题:在整改日志规范时,为了避免影响现有的代码结构以及改动尽可能小的前提下,在调用记日志的SDK处将某一个字段值首字母改为大写,代码示例如下: fmt.Println("--------SayHello begin------------") //项目中这里的a实际是作为参数传入,只是可能为空串,不为空串,这样写肯定没问题 a := "" b := strings.ToUpper(a[:1]) + a[1:] fmt.Println("b is ", b) fmt.Println("--------SayHello end------------") this.Ctx.Output.Body(this.Ctx.Input.RequestBody) 项目中这里...阅读全文

博文 2019-10-18 10:02:43 小碗汤

golang构造函数

package main import "fmt" /** * 构造函数 * 上班类 */ type Work struct { opts options } type options struct { startTime string lunchTime string endTime string } var ( lunTimeDefault = "中午十二点" ) type Option func(o *options) func StartTime(s string) Option { return func(opts *options) { opts.startTime = s } } func EndTime(s string) Option { return func(opts ...阅读全文

博文 2019-12-21 01:32:41 Cazy