专栏首页python3A Tour of Go: Basics

A Tour of Go: Basics

Struct

用指针和用变量名引用struct里的值,用法是一样的。 Struct初始化语法:

type Vertex struct {
    X, Y int
}
var (
    v1 = Vertex{1, 2}  // has type Vertex
    v2 = Vertex{X: 1}  // Y:0 is implicit
    v3 = Vertex{}        // X:0 and Y:0
    p  = &Vertex{1, 2} // has type *Vertex
)

Array

数据长度是固定的,在定义时指定。

Slices

Slices的概念与Python中的概念类似,是Array的子集。 slice只是数组的引用,因此修改slice值就是修改数组里的值。 []int{1,2,3}语法含义是先定义一个数组,再创建一个slice引用这个数组。 两个容量:

  • length:当前slice的元素个数。len(s)
  • capacity:当前slice从最左边元素开始,对应在数组里直到最后一个元素的个数。cap(s)

特殊情况: slice的0值是nil,对应的length和capacity都是0,没有对应的数组。

a := make([]int, 0, 5) 创建一个0值数组,然后返回一个slice。

slices of slices

append function

for循环还有一种表示方式range:

for i, v := range s {
}
for i := range s {
}
for i := range s {
}

Map

type Vertex struct {
    Lat, Long float64
}

var m = map[string]Vertex{
    "Bell Labs": Vertex{
        40.68433, -74.39967,
    },
    "Google": Vertex{
        37.42202, -122.08408,
    },
}
m[key] = elem  //赋值
elem = m[key]  //取值
elem, ok = m[key]  //key存在为true,否则为false
elem, ok := m[key]  //变量名未定义时需要用:=
delete(m, key)

注意点:索引字符串必须是双引号。

闭包

package main

import "fmt"

func adder() func(int) int {
    sum := 0
    return func(x int) int {
        sum += x
        return sum
    }
}

func main() {
    pos, neg := adder(), adder()
    for i := 0; i < 10; i++ {
        fmt.Println(
            pos(i),
            neg(-2*i),
        )
    }
}

adder函数返回一个闭包,每个闭包都与它自己的sum变量绑定。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python urllib & urll

     from: http://www.cnblogs.com/yuxc/archive/2011/08/01/2124073.html

    py3study
  • Sublime Text 3 的 Pac

    使用快捷键 ctrl+` 或者菜单View > ShowConsole 调出命令界面

    py3study
  • 我的vim配置文件,再度升级

    原来的repo放在 spf13-vim-leoatchina,因为原来一时脑抽,把中文字体放进去后导致体积较大,影响速度,所以重开一个repo并把windows...

    py3study
  • [Go小技巧] 如何用函数实现接口以及如何检验接口实现?

    const、var、type关键字均支持分组形式,以圆括号“()”包裹,建议将相关声明写在同一分组,如上面代码中Handler和HandlerFunc的声明。

    henrylee2cn
  • HSF的原理分析

    HSF全称为High-Speed Service Framework,旨在为淘系的应用提供一个分布式的服务框架,HSF从分布式应用层面以及统一的发布/调用方式层...

    Java架构师历程
  • 文本替换原来可以这么玩~

    今天是第三期朋友提问解答分享~ 今天提问的是我的一位好兄弟,和我同年入职某公司,后来离职独自执剑闯天涯。如今已经事业有成,每天为了心中的理想奋斗,而我还在苦逼的...

    用户1332619
  • 分布式执行代码的认知纠正

    Spark是一个分布式计算系统/组件/平台,这是都知道的,其用Scala实现Spark任务也是最原生的,但万万不能认为只要是在Spark环境下执行的Scala代...

    ZONGLYN
  • Ubuntu下安装MongoDb (二)为MongoDB创建一个列表文件

      首先打开MongoDb官网:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubun...

    用户2417870
  • 使用RMAN实现异机备份恢复(WIN平台)

    --================================= -- 使用RMAN实现异机备份恢复(WIN平台) --================...

    Leshami
  • mac os 安装 iterm2+fish shell 终端配色及vim语法高亮

    笨兔儿

扫码关注云+社区

领取腾讯云代金券