GO语言学习

go语言的结构体

声明:
type 结构体名 struct{
x,y int
}
初始化:
未显示初始化结构体变量的,初始值为0

  • var v = vertex{1,2}
  • var v = vertex{x:1}
  • s := []struct {
    i int
    b bool
    }{
    {2, true},
    {3, false},
    {5, true},
    {7, true},
    {11, false},
    {13, true},
    }//可以通过这样使用匿名结构体初始化声明变量

go语言数组

声明:
var array [num]int
array := [num]int{} //先不进行赋值
arrat := []int{1,2,3,4} //不定长数组(切片)
数组切片

  • 通过make()直接创建,参数为:切片类型,切片长度,切片容量(可选),make([]int,5)创建了一个长度为5的切片,初始值为0;make([]int,0,5)创建了一个容量为5长度为0,也就是没有数据的切片
  • 通过现成的数组来实现
  • 切片并不存储任何数据,它只是描述了底层数组中的一段,更改切片的元素会修改其底层数组中对应的元素。
  • []int表示一个类型为T的切片,切片文法类似于没有长度的数组文法,也就是可以通过v:= []int{1,2,3}创建一个[3]int{1,2,3}的数组,然后构建了一个引用了它的切片
  • [l,n]表示:下标为ln-1的数组
  • [:n]或者[l:]表示:下标从开始到n-1,下标从l到数组的最后一个元素\
  • 切片的长度就是它所包含的元素个数。切片的容量是从它的第一个元素开始数,到其底层数组元素末尾的个数。通过len()cap()来获取其长度和容量
  • nil 切片切片的零值是 nil 。nil 切片的长度和容量为 0 且没有底层数组。也就是声明没有赋值的切片var arr []int,切片 arr 为 nil切片
  • 通过append()方法来向切片中添加数据,在切片长度内的数据可以通过arr[k] = 1来操作;当操作元素索引大于切片长度而小于切片容量时,通过append()方法操作,操作完后切片长度+1,切片容量不变;当操作元素索引大于切片容量,通过append()方法操作后,切片长度+1,切片容量double。

for 循环的 range 格式可以对 slice 或者 map 进行迭代循环

  • 每次迭代都会返回两个值。 第一个值为当前元素的下标,第二个值为该下标所对应元素的一份副本。
    for i, v := range slice或者map {}
  • 可以通过赋值给 _ 来忽略序号和值,如果只需要索引值,去掉“, value”的部分即可
    for _, value := range pow {} //只获取值,赋值给value
  • for index := range pow {} //只获取索引,赋值给index

map字典(映射)

map 在使用之前必须用 make 来创建;值为 nil 的 map 是空的,并且不能对其赋值

声明:var m map[string]int,m = make(map[string]int)
声明初始化:
var m = map[string]int{"a":1, "b":2,"c":3,}
m := map[string]int{"a":1,"b":2}
通过双赋值检测某个键存在:
elem, ok = m[key]

函数

函数也是值。他们可以像其他值一样传递,比如,函数值可以作为函数的参数或者返回值
Go 函数可以是一个闭包。闭包是一个函数值,它引用了函数体之外的变量

方法

  • Go 没有类,可以为结构体类型定义方法
  • 方法接收者在它自己的参数列表内,位于 func 关键字和方法名之间**
  • 方法只是个带接收者参数的函数
  • 接收者的类型定义和方法声明必须在同一包内,不能为其他包内定义的类型包括内建类型声明方法
  • 指针接收者的方法可以修改接收者指向的值,也就是说,使用值接收者,只会对原始值的副本进行操作
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 出处---Go编程语言 欢迎来到 Go 编程语言指南。本指南涵盖了该语言的大部分重要特性 Go 语言的交互式简介,...
    Tuberose阅读 18,396评论 1 46
  • 指针 在Go语言中也存在指针,且指针保存了变量的地址,初始值为nil。定义指针与定义变量相似,不同的是在类型前面指...
    EvansChang阅读 738评论 0 0
  • 数组 数组和以往的认知有很大的不同。 数组是值类型,赋值和传参会复制整个数组,而不是指针。 数组长度必须是常量,且...
    技术学习阅读 886评论 0 0
  • 这段时间一直在练口琴,口琴是15年买的当时说为了自己能坚持学口琴就买了一个将近200元的德国口琴,买过之后练了一...
    蓝天白云789阅读 641评论 0 0
  • 八月二十二号了,在家整整五十六天,这个最后的暑假也在亲朋好友“什么时候上学啊?”的问候中接近尾声,过不了几天,...
    九月饮一人冷暖阅读 283评论 1 1