go语言

qq_33209724 · · 399 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一 GO 语言函数

     函数是基本的代码块,用于执行一个任务。

      GO语言最少有个main() 函数。

二 Go 语言切片(Slice)

     Go语言切片是对数据的抽象。

     Go数组的长度不可改变,在特定的情况下就是不太适合,go提供了一种功能强大的内置类型切片(“动态数组”),可以追加元素,随着元素的增多数据增长。

(2) len()和 cap()函数

      切片是可索引的,并且可以由 len() 方法获取长度。

      切片提供了计算容量的方法 cap() 可以测量切片最长可以达到多少。

package mainhttp://write.blog.csdn.net/postedit/78478348

import "fmt"
http://write.blog.csdn.net/postedit/78478348
func main(){
    varnumbers= make([]int,2,5)
http://write.blog.csdn.net/postedit/78478348
    printSlice(numbers)
}

func printSlice(x []int){
    fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

[Running] go run "d:\GOPATH\godemo\demo2.go"
len=2 cap=5 slice=[0 0]

(3)空(nil)切片

(4) append() 和copy()函数

          如果想增加切片的容量,我们必须创建一个新的更大的切片并把原分切片的内容拷到新的切片内。

    // 允许追加切片
    number= append(number,0)
    printSlice(number)

    //向空切片添加一个元素
    number= append(number,1)
    printSlice(number)

    //同时添加多个元素
    number= append(number,2,3,4,5,6,7,8)
    printSlice(number)


    //创建切片 numbers1 是之前切片的两倍
    numbers1:= make([]int,len(number),(cap(number))*2)
    printSlice(numbers1)
    //拷贝
    copy(numbers1,number)
    printSlice(numbers1)

len=1 cap=1 slice=[0]
len=2 cap=2 slice=[0 1]
len=9 cap=10 slice=[0 1 2 3 4 5 6 7 8]
len=9 cap=20 slice=[0 0 0 0 0 0 0 0 0]
len=9 cap=20 slice=[0 1 2 3 4 5 6 7 8]

三 Go 语言范围(Range)

    Go语言中range关键字用于for循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和动态数组中返回元素的索引值、在集合中返回key值

    nums:= []int{2,3,4}
    sum:= 0
    fori, num:= range nums{
        sum += num
        fmt.Println("sum"+" i",sum,i)
    }

    
    //在数组上使用range将传入index和值得两个变量。上面那个例子我们不需要使用该元素的序号,所以
    //使用空白符省略。有时候我们确实需要知道它的索引

    fori,num:= range nums{
        if num== 3{
            fmt.Println("index:",i)
        }
    }
    //range 也可以用在map的键值对上

    kvs:=map[string]string {"a":"apple","b":"bananana"}
    fork,v:= range kvs{
        fmt.Printf("%s -> %s\n",k,v)
    }
    //range 也可以用来Unicode字符串。第一个参数是字符的索引,第二个参数是(Unicode本身)
    fori,c:= range"go"{
        fmt.Println(i,c)
    }

四 GO语言Map(集合)

    Map是一种无序的键值对的集合。Map最重要的一点是通过Key来快速检索数据,key类似于索引,指向数据的值。

    Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。

    varcountryCapitalMapmap[string]string
    //创建集合
    countryCapitalMap= make(map[string]string)
    
    //mp 插入key-value对,各个国家对应的首都

    countryCapitalMap["France"]= "Paris"
 countryCapitalMap["Italy"]= "Rome"
  countryCapitalMap["Japan"]= "Tokyo"
 countryCapitalMap["India"]= "New Delhi"
    //使用key输出map值
    forcountry := range countryCapitalMap{
        //中间不能出现空格
        fmt.Println(country," ",countryCapitalMap[country])
    }
    
    captial,ok:= countryCapitalMap["United States"]
    //查看元素是否在集合中存在
    if(ok){
        fmt.Println("Capital of United States is",captial)
    }else{
        fmt.Println("Capital of United States is not present")
    }
    
    //删除集合中的元素 直接删除key
    delete(countryCapitalMap,"France")

    forcountry := range countryCapitalMap{
        //中间不能出现空格
        fmt.Println(country," ",countryCapitalMap[country])
    }

输出结果

France Paris
Italy Rome
Japan Tokyo
India New Delhi
Capital of United States is not present
Italy Rome
Japan Tokyo
India New Delhi


本文来自:CSDN博客

感谢作者:qq_33209724

查看原文:go语言

入群交流(和以上内容无关):Go中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

399 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传