go语言

一 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 (){
     var numbers = 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
     for i , num := range nums{
        sum += num
        fmt. Println ( "sum" + " i" ,sum,i)
    }

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

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

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

四 GO语言Map(集合)

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

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

     var countryCapitalMap map [ 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值
     for country := 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" )

     for country := 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


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值