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

golang fmt格式“占位符”

golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan} %#v 相应值的Go语法表示 Printf("#v", people) main.Human{Name:"zhangsan"} %T 相应值的类型的Go语法表示 Printf("%T", people...阅读全文

Golang中的正则表达式

Golang中的正则表达式 用法: 单一: . 匹配任意一个字符,如果设置 s = true,则可以匹配换行符 [字符类] 匹配“字符类”中的一个字符,“字符类”见后面的说明 [^字符类] 匹配“字符类”外的一个字符,“字符类”见后面的说明 \小写Perl标记 匹配“Perl类”中的一个字符,“Perl类”见后面的说明 \大写Perl标记 匹配“Perl类”外的一个字符,“Perl类”见后面的说明 [:ASCII类名:] 匹配“ASCII类”中的一个字符,“ASCII类”见后面的说明 [:^ASCII类名:] 匹配“ASCII类”外的一个字符,“ASCII类”见后面的说明 \pUnicode普通类名 匹配“Unicode类”中的一个字符(仅普通类),“Unicode类”见后面的说明 \PUn...阅读全文

博文 2016-10-28 14:00:04 zfy1355

golang time 格式详解

神奇时刻:2006-01-02 15:04:05 1 官方文档 time package(需科学上网查看):https://golang.org/pkg/time/ 2 自定义时间格式 在看代码之前,先问一个关键问题:你懂 2006-01-02 15:04:05 么?不懂还是看代码吧! package main import ( "fmt" "time" ) func main() { // 使用系统默认格式打印当前时间 t1 := time.Now(); fmt.Println("t1:", t1) // 自定义格式,相当于Java中的时间格式:yyyy-MM-dd HH:mm:ss t2 := t1.Format("2006-01-02 15:04:05") fmt.Println("t...阅读全文

博文 2018-10-10 21:34:45 银冰雪千载

golang操作gorm基本

前言 对于golang中使用gorm操作mysql,可能其他的操作都是固定的,唯一麻烦的就是字段的映射。 gorm允许自己定义一个表的结构映射,但是,golang中,首字母大写来表示public或者private,而gorm在做映射的时候,大写的转化是不一样的。这里就做一下区分。 1.直接使用表的机构映射 比如你用find之类不需要写表名称,直接用结构获取的情况下,struct的机构和数据库中的结构要一致,不一样的用gorm:"column:nameSpace",这个来说明,column里面就是你想要映射的名称。 2.定义自己的结构 这么定义的话,就不要求完全一样。 这里又分两种 一,你如果没有用row,直接一条语句末尾加Scan(&struct),这么来接受的,需要字段名称对应,也可以这个...阅读全文

博文 2019-09-29 14:33:10 aside section ._1OhGeD

golang实现中文汉字转拼音

载请注明出处: golang实现中文汉字转拼音 Golang 介绍 在一些的开发中,可能会遇到一些需要把中文汉字转成拼音的需求,在这里自己简单的用 golang 实现了一下中文转拼音的库。欢迎各位大佬前来指正。 2. 实现原理 实现起来的话,也非常简单,是将所有的汉字对应的 rune码,对应上它的拼音,也即是,有一个这样的 map[rune]string, 其中 key 为汉字的 rune码,value 就是汉字的拼音了。这个 map 是通过文件来生成的。文件内容如下: 3400=>qiū 3401=>tiàn 3404=>kuà 3405=>wǔ 3406=>yǐn 340C=>yí 3416=>xié 341C=>chóu 其中的拼音都是带声调的。不需要声调的话,可以替换成没有声调的字符...阅读全文

博文 2019-04-26 19:34:43 ChainZhang

Go语言中如何写Get和Set方法

首先我们要知道,在Go中方法名首字母大写是要导出的方法(也就是公有方法,public),而小写则是不导出的方法(私有的,private)。 Go官方不提供对Get、Set方法的自动支持。对是否设置Get Set方法的推荐做法,见代码: package main import "fmt" type Foo struct { name string } // Set方法 func (f *Foo) SetName(name string) { f.name = name } // Get方法,无需使用Get,只要把首字母大写即可。 func (f Foo) Name() string { return f.name } func main() { p := Foo{} p.SetName("Ab...阅读全文

博文 2015-03-07 03:00:01 baiyuxiong

go的json输出

// code_030_JSON_key_value project main.go package main import ( "encoding/json" "fmt" ) //Go语言内建对JSON的支持。 //使用Go语言内置的encoding/json 标准库,开发者可以轻松使用Go程序生成和解析JSON格式的数据 type IT struct { Company string Subjects []string IsOk bool Price float64 } type University struct { //ID int //所学专业的ID Name string `json:"-"` //大学名称 //Department string //系 //Major stri...阅读全文

博文 2018-10-07 00:35:10 ck_god

Go--包引用介绍

最近在学习Go编程,本文简单的叙述如何在Go编程中使用包(包管理)。 和其他大多数语言一样,Go也存在包,并使用package关键字定义一个包。首先介绍在程序中如何引入包,引入包有以下几种方式: 1. 最简单的方式引入一个包的方式是直接引入包,例如: import "fmt" import "os" 2. 也可以通过下面的方式将包一块引入,并写在括号内: inport ( "fmt" "os" ) 通过上面的方式,可以引入系统包或第三方的包,下面重点介绍如何引入自定义的包和函数: 一般我们将主程序放在src的mian文件夹下(主程序中包含main函数,并将主程序的包名写为package main),将其他模块放在相应的文件夹下,例如下图所示 主函数在main.go文件中,主函数名也可以为其他...阅读全文

博文 2015-11-02 03:00:01 sunshiming

Go编程——变量、函数导出与首字母大写

Go编程——变量、函数导出与首字母大写 标识符可被 导出 以允许从另一个包访问。 同时符合以下条件即为已导出标识 1、标识符名的第一个字符为Unicode大写字母(Unicode类别“Lu”); 2、该标识符在包块中已声明或为字段名或方法名。 以程序导入gotest/even包为例 package main import ( "even" "fmt" ) func main() { i:=even.I fmt.Printf("Is %d even? %v\n", i, even.Even(i)) } package even var I int = 123 func Even(i int) bool { return i%2==0 } func odd(i int) bool { retur...阅读全文

博文 2015-06-18 09:02:12 typ2004

golang利用gob序列化struct对象保存到本地

golang可以通过json或gob来序列化struct对象,虽然json的序列化更为通用,但利用gob编码可以实现json所不能支持的struct的方法序列化,利用gob包序列化struct保存到本地也十分简单. gob包实现的序列化struct对象保存到本地 务必注意的是golang序列化有个小坑,就是struct里的字段必须要可导出也就是首字母大写 package main import ( "encoding/gob" "fmt" "os" ) type User struct { Id int Name string } func (this *User) Say() string { return this.Name + ` hello world ! ` } func main...阅读全文

博文 2015-04-22 03:00:00 reflectsky

Go语言学习(三)枚举和类型

package main import "fmt" //1.枚举的使用 // 枚举指一系列相关的常量,比如下面关于一个星期中每天的定义。通过上一节的例子,我们 // 看到可以用在 const 后跟一对圆括号的方式定义一组常量,这种定义法在Go语言中通常用于定义 // 枚举值。Go语言并不支持众多其他语言明确支持的 enum 关键字。 // 下面是一个常规的枚举表示法,其中定义了一系列整型常量: const( Sunday = iota //0 Monday //1 Tuesday //2 Wedenesday //3 Thursday //4 Friday //5 Saturday //6 //同Go语言的其他符号(symbol)一样,以大写字母开头的常量在包外可见。 //以上例子中 num...阅读全文

博文 2016-03-23 23:00:06 mChenys

golang字符串首字母转化为大写

字符串首字母转化为大写 /** * 字符串首字母转化为大写 ios_bbbbbbbb -> iosBbbbbbbbb */ func strFirstToUpper(str string) string { temp := strings.Split(str, "_") var upperStr string for y := 0; y < len(temp); y++ { vv := []rune(temp[y]) if y != 0 { for i := 0; i < len(vv); i++ { if i == 0 { vv[i] -= 32 upperStr += string(vv[i]) // + string(vv[i+1]) } else { upperStr += stri...阅读全文

博文 2016-11-27 15:00:04 yang8023tao

Golang中JSON解析结构体

一、StructTag介绍StructTag是go语言结构体中的一个标记字段,放在字段声明的后面,一般只有特定情况下会用到,如json的转化。 使用的时候只要把标记的字段用两个包起来即可,标签内的语法形式通常为key:”value”` ,多个标记用空格隔开。 1234type tagTest struct { tagA string `TagA` tagB int `TagB`} 二、Struct转Json要想把struct转化成json,只要把结构体内的字段名设置成导出状态,也就是把首字母大写就行了,默认情况下,转化后的json中的key值和结构体中的字段名是一样的。 1234567891011121314151617181920212223package mainimport ( "fm...阅读全文

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

go语言JSON处理

https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/07.2.md JSON(Javascript Object Notation)是一种轻量级的数据交换语言,以文字为基础,具有自我描述性且易于让人阅读。尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。JSON由于比XML更小、更快,更易解析,以及浏览器的内建快速解析支持,使得其更适用于网络数据传输领域。目前我们看到很多的开放平台,基本上都是采用了JSON作为他们的数据交互的接口。既然JSON在Web开...阅读全文

博文 2016-04-22 15:00:01 liukuan73

golang 之 import 和 package 的使用

golang 使用包 package 来管理定义模块,可以使用 import 关键字来导入使用。 如果导入的是 go 自带的包,则会去安装目录 $GOROOT/src 按包路径加载,如 fmt 包 如果是我们 go get 安装或自定义的包,则会去 $GOPATH/src 下加载 package 的定义 go import 的包是由 包路径/包名 组合而成的,例如导入我们自定义的 baz 包,包路径为 $GOPATH/src/foo/bar/baz,baz 包的源码都存放在此目录下。 我们需要规范的将 baz 包中源码的 package 定义为 baz,就定义好一个可 import 载入的的包了。 hello 模块 //$GOPATH/src/foo/bar/baz/hello.go pac...阅读全文

博文 2019-02-21 16:34:46 big_cat

golang -- 序列化 msgpack & json

下面总结一下go的序列化,通信中常用的格式:msgpack和json msgpack 安装: go get go get github.com/vmihailenco/msgpack go install github.com/vmihailenco/msgpack api:http://godoc.org/github.com/vmihailenco/msgpack func ExampleEncode() { b, err := msgpack.Marshal(true) fmt.Printf("%v %#v\n", err, b) // Output: []byte{0xc3} } func ExampleDecode() { var out bool err := msg...阅读全文

博文 2014-10-04 19:27:07 flyking

Go语言解析json字符串

Go解析json格式字符串 Type Info struct{ Name string Age int Address string } 将json格式字符串解析给struct,只需将struct对象传给json.Unmarshal()函数 JsonStr := `{“name”:”yang”,”age”:24,”address”:”shenzhen”}` Var myInfo Info Json.unmarshal([]byte(JsonStr),&myInfo) 说明:在声明结构体有两个需要注意的地方,下面解释说明两种声明 第一种 Type Info struct{ Name string Age int Address string } 变量Name必须与json字符串name相同,并...阅读全文

博文 2015-06-17 23:01:30 newsyoung1

golang中json的使用

golang中使用json,经常会使用到两个函数 func Unmarshal(data []byte, v interface{}) error 1 将json反序列化成struct对象 2将json 反序列化到map中 3 将json反序列化到slice中 func Marshal(v interface{}) ([]byte, error)1将struct对象序列化成json 2将map序列化成json 3将slice序列化成json package main import ( "fmt" "encoding/json" ) type User struct { Username string Password string FriendName []string } func mai...阅读全文

博文 2017-03-05 05:55:41 skh2015java

golang 开发后端基础(1)

目标:使用 golang 开发 web 应用(半)IDE:visual studio code ,如果没用过就赶紧体验吧,下一代的开发工具。我用 visual studio code 写 rust golang c++ groovy javascript typescript powershell python, 用了就放不下。我除了 c++ 还是喜欢用 visual studio 几乎全用 visual studio code 来写 visual studio code 提供了对许多语言的扩展 开始今天分享先介绍一位神一般的人物 TJ Holowaychuk,程序员兼艺术家,Koa、Co、Express、jade、mocha、node-canvas、commander.js等知名开源项目的...阅读全文

博文 2018-12-07 06:34:42 zidea

GoLang 字符串处理大全

GoLang基础数据类型--->字符串处理大全 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 欢迎加入: 高级运维工程师之路 598432640 任何一门语言都有它的好处,Golang的长处就是在于它的高并发能力,所以现在练习好Golang的用法,有利于你找一份好的工作哟~在学习任何一本语言,它的基本数据类型我们应该都得熟记于心,今天我们处理的主角就是字符串。让我们一起看看Golang对字符串的用法吧。我们此处主要针对strings这个包的某些方法的用法做演示。 1.Contains 1 /* 2 #!/usr/bin/env gorun 3 @author :yinzhengjie 4 Blog:http://www.cnblogs.com/yinzhengjie/ta...阅读全文

博文 2017-09-30 09:30:01 yinzhengjie

golang语言渐入佳境[24]-string-大小写转换类函数

string-大小写转换类函数123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263package mainimport ( "fmt" "strings")/*1、func Title(s string) string将字符串s每个单词首字母大写返回2、func ToLower(s string) string将字符串s转换成小写返回3、func ToLowerSpecial(_case unicode.SpecialCase, s string) string将字符串s中所有字符按_case指定的映射转换成小写...阅读全文

博文 2018-12-06 03:35:16 jonson_jackson

golang汉字转拼音

1、为什么造轮子?同事在开发过程中需要用到敏感词过滤检查,其中一个功能就是拼音搜索,需要用到汉字转拼音,然后网上找了这么一个库,首先感谢他对汉字转拼音的贡献,对golang源码的贡献。然后我们的golang执行文件编译后启动速度慢了100倍,经过逐一排查后发现原来是这个库导致的,于是便有了这么一个造轮子的过程。2、源码源码地址3、使用demo添加引用import( "github.com/cao-guang/pinyin" )初始化调用func main() { pinyin.LoadingPYFileName("./data/pinyin.txt") //这里是字典文件路径程序启动调用一次,载入缓存 //demo str1, err := pinyin.To_Py("汉字拼音", "", ...阅读全文

博文 2019-10-10 10:14:57 cao-guang

Golang 方法method

方法method Go中虽没有class,但依旧有method 通过显示说明receiver来实现与某个类型的结合 只能为同一个包中的类型定义方法 receiver可以是类型的值或者指针 不存在方法重载 可以使用值或指针来调用方法,编译器会自动完成转换 从某种意义上来说,方法是函数的语法糖,因为receiver其实就是方法所接收的第一个参数(Method Value vs. Method Expression) 如果外部结构和嵌入结构存在同名方法,则优先调用外部结构的方法 类型别名不会拥有底层类型所附带的方法 方法可以调用结构中的非公开字段 package main import ( "fmt" ) type A struct { Name string } type B struct { ...阅读全文

博文 2017-10-17 22:00:01 skymyyang

golang基础 -- 引用外部函数

如下所示,main.go文件中函数如果要调用与main.go同级目录下的func文件夹中func1.go中的Test()函数的具体实现方法。test |--func |--func1.go |--func2.go |--main.go在main.go文件中需要写入的是package main import( "test/func" ) func main(){ func.Test() } 其中需要注意的是: 1、test项目要在golang的$GOPATH路径下。 例如$GOPATH=/home/data而test文件路径是/homg/data/src/test那么main.go中import引用的路径就是"test/func"。如果文件路径是/home/data/src/XXX/test那...阅读全文

博文 2017-04-28 12:30:34 TonnyAlmend

Go 的 rune byte 和 string

- `rune` 、 `byte` 和 `string` 都是 `Go` 的内置类型 ----- - `byte` - byte是`uint8`的别名,在所有方面都等同于`uint8` - 按惯例,它用于区分**字节值**和**8位无符号整数值**。 - `rune` - `rune`是`int32`的别名,在所有方面都等同于`int32` - 按惯例,它用于区分**字符值**和**整数值**。 - `string` - string是所有**8位字节字符串**的集合,通常但不一定代表UTF-8编码的文本 - 字符串可能为空,但是不能为 `nil` - 字符串类型的值是不可变的 - 由上面得解释我们大概可以明白 - `rune` 可以表示得比 `byte` 多 - `string` 类型的底...阅读全文

中文手机域名,开启“移动互联网+”新时代

要说这两年让人印象深刻的中文域名,非“.手机”莫属。这个简单粗暴又直白的域名,自开放注册依赖就被上百个手机品牌哄抢。 中文手机域名的优势 1、 中文手机域名自开放注册依赖,注册量已达到32313个,居中文域名注册量第5位,前4名分别是“.网址”、“.信息”、“.公司”、“.世界”。手机巨头小米手机、电商巨头唯品会、数码巨头尼康等均已注册中文手机域名。 ![20161212160555_28665.png](http://studygolang.qiniudn.com/170204/36165d3ccb247c9d2d4a5f686d209ea4.png) 2、 调查显示,有75.4%的智能手机用户,每两年至少换一次机,34.4%的用户至少一年一换,仅有24.6%的用户能坚...阅读全文

GO实现简单的RSA加密解密

## RSA加密 RSA的加密过程可以使用一个通式来表达 > 密文=明文EmodN 也就是说RSA加密是对明文的E次方后除以N后求余数的过程。就这么简单?对,就是这么简单。 从通式可知,只要知道E和N任何人都可以进行RSA加密了,所以说E、N是RSA加密的密钥,也就是说E和N的组合就是公钥,我们用(E,N)来表示公钥 >公钥=(E,N) 不过E和N不并不是随便什么数都可以的,它们都是经过严格的数学计算得出的,关于E和N拥有什么样的要求及其特性后面会讲到。顺便啰嗦一句E是加密(Encryption)的首字母,N是数字(Number)的首字母 ## RSA解密 RSA的解密同样可以使用一个通式来表达 > 明文=密文DmodN 也就是说对密文进行D次方后除以N的余数就是明文,这就是RSA解密过程。...阅读全文

博文 2019-05-12 22:50:39 xuthus5

golang 设置 http response 响应头与坑

1、 设置WriteHeader的顺序问题 之前遇到个问题,在一段代码中这样设置WriteHeader,最后在header中取Name时怎么也取不到。 w.WriteHeader(201) w.Header().Set("Name", "my name is smallsoup") 用 golang 写 http server 时,可以很方便可通过 w.Header.Set(k, v) 来设置 http response 中 header 的内容。但是需要特别注意的是:某些时候不仅要修改 response的header ,还要修改 response的StatusCode。修改response的StatusCode 可以通过:w.WriteHeader(code) 来实现,例如: w.Writ...阅读全文

博文 2018-08-25 12:34:51 我的小碗汤

mysql表结构自动生成golang struct

a lib for golang , generate mysql table schema to golang struct mysql表结构自动生成golang struct github地址 https://github.com/gohouse/converter 安装 直接下载可执行文件: 下载地址 golang源码包: go get github.com/gohouse/converter 示例表结构 CREATE TABLE `prefix_user` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Email` varchar(32) NOT NULL DEFAULT '' COMMENT '邮箱', `Password` varchar(32...阅读全文

博文 2018-11-21 16:34:49 fizz

GoLang structTag说明

在处理json格式字符串的时候,经常会看到声明struct结构的时候,属性的右侧还有小米点括起来的内容。形如 type User struct { UserId int `json:"user_id" bson:"user_id"` UserName string `json:"user_name" bson:"user_name"` } struct成员变量标签(Tag)说明 要比较详细的了解这个,要先了解一下golang的基础,在golang中,命名都是推荐都是用驼峰方式,并且在首字母大小写有特殊的语法含义:包外无法引用。但是由经常需要和其它的系统进行数据交互,例如转成json格式,存储到mongodb啊等等。这个时候如果用属性名来作为键值可能不一定会符合项目要求。 所以呢就多了小米点的...阅读全文

博文 2017-12-18 23:00:01 faunjoe88

golang学习遭遇错误原因分析续

7、 error: reference to field ‘Printf’ in object which has no fields or methods f.Printf("%v", (Map(f,m)))问题点:在启用import f "fmt"后,如果再在函数中定义变量f时,如果使用f.Print**,这就会出现上述错误了。 8、error: argument 1 has incompatible type (cannot use type int64 as type time.Duration) time.Sleep(sec*1e9) ^问题点:Sleep的参数不正确,应该使用time.Duration进行类型转换。尽管time.Duration类型是使用type Duration...阅读全文

博文 2015-03-19 03:00:01 neujie

beegon 求助

`type Activity struct { //当前登录用户id userId int64 `json:"userId,omitempty"` keyword string `json:"keyword,omitempty"` } type ActivityGetOneInfo struct { ActivityInfo *Activity `json:"activity"` } a := Activity{1, "xxx"} c.Data["json"] = ActivityGetOneInfo{ActivityInfo: &a} c.ServeJSON()` 使用 beego 的时候,返回总是空的,是哪里写错了吗? 解决了...阅读全文

go处理json格式文件

关注开源中国很久了,但是一直没有发表过博客,原因是觉得自己能力还不够,因为这里的人们都让我仰望啊。一直在CSDN坚守着,但是,最近却总觉得那里气氛不对,遂来到了这里,来发表自己的看法,还有自己的学习笔记。 工作中使用的是go语言,其实自己学习的也不是很深入,只是勉强可以用来编几行代码,出了问题还是要跟API求救,曾设想过去读源码,但是却一直没有决心,幸好有很多testcase,提供了调用函数的方法。 花了好长时间,总是没有办法把我定义的文件decode了,把struct改了无数遍,运行testcase确实是正确的,一到我的程序就不行了。我都要打算放弃的时候,突然注意到了一件事情,示例中的Key都是大写的,我有种恍然大悟的感觉。毕竟为了简洁,go省去了好多关键字,像public,private...阅读全文

博文 2014-10-04 19:26:22 lunar_stud

golang中struct成员变量的标签(Tag)说明和获取方式

在处理json格式字符串的时候,经常会看到声明struct结构的时候,属性的右侧还有小米点括起来的内容。形如: 1 2 3 4 type User struct { UserId int `json:"user_id" bson:"user_id"` UserName string `json:"user_name" bson:"user_name"` } 这个小米点里的内容是用来干什么的呢? struct成员变量标签(Tag)说明 要比较详细的了解这个,要先了解一下golang的基础,在golang中,命名都是推荐都是用驼峰方式,并且在首字母大小写有特殊的语法含义:包外无法引用。但是由经常需要和其它的系统进行数据交互,例如转成json格式,存储到mongodb啊等等。这个时候如果用属性名来...阅读全文

博文 2018-01-16 18:33:05 老汉-憨憨

超级简单ORM的实现方式

//根据传入的struct中定义的字段名自动小写首字母,查询得到的值自动插入struct中.当然也可以用tag查询,但是需要首先把tag取出来,然后做一个map把tag值和对应的field存储起来. func SelectOne(i interface{}, query string, a ...interface{}) { rows, err := db.Query(query, a...) if nil != err { log.Println(err) return } cols, err := rows.Columns() if nil != err { log.Println(err) return } is := ma...阅读全文

golang post 传参

如果某个属性是String 类型,data数据块中需要传字符串类型,不能传整型。 如果某个属性是int类型,data数据块中的属性需要传int类型,不能传字符串。否则默认为0. json字符串需要属性名用双引号包围 golang 属性需要首字母大写,才能在外面被访问到...阅读全文

博文 2016-11-13 21:00:02 u012576527

golang 结构体

1. 定义 结构体是将另个或者多个任意类型的命名变量组合在一起的聚合数据类型。 2. 成员变量 访问控制机制 如果一个结构体的成员变量名称是首字母大些的,那么这个变量是可导出的(即在其他包可以访问到)。 一个结构体可以同时包含可导出和不可导出的成员变量 type A struct { Hour int //可导出 minute int //不可导出 } 限制 命名结构体类型s不可以定义一个拥有相同结构体类型s的成员变量,也就是一个聚合类型不可以包含它自己。但是s中可以定义一个s的指针类型,即*s。如下: type B struct { value int //Next B //错误 Next *B //正确 } 3. 结构体比较 如果结构体的所有成员变量都可以比较,那么这个结构体是可以比较的...阅读全文

博文 2018-06-30 18:34:44 百味纯净水

Go语言”奇怪用法“有哪些?

自:http://blog.csdn.net/delphiwcdj/article/details/16903649 本文通过对A Tour of Go的实践,总结Go语言的基础用法。 1 Go语言”奇怪用法“有哪些? 1,go的变量声明顺序是:”先写变量名,再写类型名“,此与C/C++的语法孰优孰劣,可见下文解释: http://blog.golang.org/gos-declaration-syntax 2,go是通过package来组织的(与python类似),只有package名为main的包可以包含main函数,一个可执行程序有且仅有一个main包,通过import关键字来导入其他非main包。 3,可见性规则。go语言中,使用大小写来决定该常量、变量、类型、接口、结构或函数是否可...阅读全文

博文 2016-04-06 18:00:06 ribavnu

golang “is an unexported field of struct type c...

今天调试程序的时候发现程序报is an unexported field of struct type controllers,但是用fmt.Println打印结构能正常 ,只是放到模板引擎中就不能访问了。 查找错误过程: 在控制台能够通过FMT包打印结构体,那么证明语法上应该没有什么问题。而且发生错误只是在模板调用的时候发生,于是从调用的数据入手。原先的定义的结构是 type Good struct{ item string price float } 后来想起,GO语言中要提供给外面访问的方法或是结构体必须是首字母大写。这个结构体只有结构体名大写了,而里面的字段没有首字母大写,而GO语言在模板调用时应该认为是两个不同的过程,所以找不到值。于是把结构改为 type Good struct{...阅读全文

博文 2014-10-04 19:27:39 念念之间

Golang elasticsearch 对接问题

es包gopkg.in/olivere/elastic.v3Golang操作es 过程中,定义struct 结果写入es的内容总是为空,后来发现,定义struct 首字母小写了,Golang中首字母小写表示私有,所以无法成功写入,改成共有的即可。刚学习,还不熟悉,做个记录// qnzsEs project main.gopackage mainimport ( "fmt" "log" "os" "database/sql" "time" _ "github.com/go-sql-driver/mysql" "gopkg.in/olivere/elastic.v3")var client *elastic.Clientvar db *sql.DBtype ques struct { qid s...阅读全文

博文 2017-02-09 17:32:25 guhongzi

初识golang,变量,常量,iota的学习

变量的定义: go总使用var来声明变量,在函数外面声明变量的方式有 var 变量1, 变量2, 变量3 [int] = 1, 2, 3,其中int这个类型声明可以省略。如果在函数内部声明可以使用以下这种更加简便的方法 变量1, 变量2, 变量3 := 1, 2, 3,这种方式只能在函数内使用。 常量的使用: go中常量可以定义为数组、布尔值、字符串等类型。使用const 常量名 [常量类型] = 常量值。 也可以采用分组声明的方式,如: const pi = 3.14 const prefix = "Go_" var i int var sum int 采用分组后: const ( pi = 3.14 prefix = "Go_" ) var ( i int sum int ) 在分组声明...阅读全文

博文 2014-10-04 19:27:38 vcity

golang 导入自定义结构体、实现接口

项目根目录为mygo,新建go文件,写一个入口函数 package main func main() { } 先新建一个新建model文件夹并新建.go文件(文件名随意无影响),自定义结构体 package people type Info struct { Age int } type People struct { Name string Info Info } func (p People) Getname() string { return p.Name } func (p People) Setname(name string) People { p.Name = name return p } 声明首字母大写可供外部调用 再新建imp文件夹,用来放接口文件,新建.go文件,写一个...阅读全文

博文 2018-07-16 12:34:49 droid_zf

sublime text / golang 自动完成

比如gfn,会成生以下go func() {CR CR}() 虽然保存后,gofmt会清除,但看着很不爽,要修改Go.sublime-package,把OD OA修改成20 0A,注意不能直接删除0D,似乎文件字节长度不对的话,Sublime会报错 ******************六一节补充***************** 研究发现Sublime的自动完成很SB,不分场合的,就算是字符串里也提示,对我们这种有洁癖的人来说怎么可以忍?再仔细看看,发现Var等一些智能提示的位置比较准,这是怎么回来?看了一轮,知道Go.sublime-package是Sublime自带的语法功能,其自动完成比较2;象Var这种则是插件里提供的,比较智能。 于是修改Go.sublime-package里的字节...阅读全文

博文 2015-06-01 23:00:02 max佩恩

go语言基础总结

// second //以下代码不可以直接使用,go语言中凡是声明过的变量都要使用,否则会报错 //以下代码只是go语言基础总结,包括了从变量声明到switch分支 package main import ( "fmt" ) //声明常量 const ( i = 0 s string = "Test" Start string = "go语言开始" //首字母大写的变量是公有的(待验证) ) //声明一组全局变量 var ( k int s2 string flag bool ) //枚举类型iota关键字,默认是0,每次自动增长1 const ( p1 = iota //p1=0 p2 = iota //p2=1 p3 //p3=2 p4 //p4=3 ) func testMap() {...阅读全文

博文 2014-10-04 19:26:25 wangfeiaini

Go 解析JSON

JSON(Javascript Object Notation)是一种轻量级的数据交换语言,以文字为基础,具有自我描述性且易于让人阅读。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。JSON由于比XML更小、更快,更易解析,以及浏览器的內建快速解析支持,使得其更适用于网络数据传输领域。 解析到结构体 Go的JSON包中有如下函数 // json.go package main import ( "encoding/json" "fmt" ) type Server struct { ServerName string ServerIP string...阅读全文

博文 2016-04-17 01:00:03 ycyoes

Golang首字母大小写的意义

博客地址:https://www.jianshu.com/p/d3c33e243a71一、含义简介1.1、首字母大写 == public1.2、首字母小写 == private注意:这个 public 和 private 是相对于 go 文件首行 package 声明的包名来说二、package 声明的包名与该文件所处于实际文件系统中目录的关系2.1、一般情况下建议这个包名和所在的目录名保持一致,这样容易辨认。但不一致也是可以的,比如我在 src/aa/bb 目录下新建了 fab.go 文件,我在 fab.go 开头,声明包名 package pab,声明与实际目录不一致。 package pab type ( EventObserver struct { // 大写外包可访问 id int...阅读全文

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