`
hemowolf
  • 浏览: 154331 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

go语言学习小结(一)

 
阅读更多
学习go。记录下
1),package、import
    这两个功能在现在的很多语言(java、C#)都具备了。这里面引入包在C家族确实是个很好的东西,使得代码组织更清晰;import而不是include头文件,完全剔除了c家族的弊病。

2),变量命名风格的改变
   定义变量:
      var i int跟C家族语法int i;相去甚远,貌似更接近delphi、javascript、scala风格。当然在语法分析中这样定义变量比C风格的定义是更容易识别的。

    类型推导:
      类型推导在很多函数语言(scala、f#等)是必须滴,当然C#为了推出lambda表达式也实现了这个功能,不过java现在还没有。需要注意的是go中类型推导只能用在函数里面。来看看 var i int=11的等价写法  i := 11

   同时给多个变量赋值:
      lua可以给多个变量赋值的,go也有而且语法几乎一样滴 a,b,c := 1,2,3 ,如果写成 a,_:=1,2 那么2就自动丢掉。
      有了这个功能交换变量一句话就搞定了 a,b =b,a。 

  定义多个变量:
      如果是定义相同类型的变量可以这样 var i,j int  跟C差不多 int i,j;
      如果是多个不同类型的变量那是这样
      var (
                i int
                s string
        )

  定义数组: 
      定义数组跟定义变量稍微变一变 var array [8]int
      还可以这样写 
array :=[...]int{0,1,2,3,4,5,6,7}
      获取数组长度 len(
array),而不是C家族的array.length
 
3),go内置数据类型

  slices:
      上面定义的数组大小是无法改变的。如果要动态的那就要这样 
array :=make([]int,8) 或者这样是
       var array []int
       array =make([]int,8)

        [n:m]访问符
            [n:m]同样也适用于数组的。用array[n:m](n、m是数组下标)将返回一个从n到m-1的slices。
            如果写成[n:]则等价于[n:len(array)]
            
 array :=[...]int{0,1,2,3,4,5,6,7}
             array2 :=array[2:4]    //返回{2,3}
 
             
        cap函数
             cap 用于获取数组的容量。
 

       append函数
             在一个slices或数组后追加元素,产生一个新slices。
             
array := [...]int{0,1,2,3,4,5,6,7}
             array1 :=
 array=append(array,8,9,10);//添加的数据(8、9、10)是一个可变参数

        copy函数
           n = copy(des ,src)。n等于拷贝元素个数。
           array := [...]int{0,1,2,3,4,5,6,7}
           array1 :=
 make( []int,5)
           copy(array1,array[0:5])
      
  map :
      go中内置了map数据结构。定义一个map是这样的 var m map[kType]vTypevType是map关键字存储的值的类型kType是关键字的数据类型。map的创建也是需要用make函数来创建的 m=make(map[int]string) ,这里创建关键字类型为int,类型为string的map。如果map的值是知道的,那么可以用这样
      m:=map[int]String{
     
         1:"A",
               2:"B",
               3:"C",
                ...
      
      注意map里每个元素逗号后一定要换行。
      map增加元素 m[4]="d" ;
      map去除元素 delete(m,4) 
      map判断存在 val,exists :=m[4]

      很多人对go在语言层面内置slices和map持欢呼的态度,go为了内置slices(map)还添加关键字(go号称很吝啬关键字滴)。lua、python等语言都内置了很有特色的数据类型,go走的是一条方向(ruby、python的开发人员爽了吧)。也许真如go的开发者说的slices(map)是轻量快速的。 

4),控制语句
    go里控制语句精简了(去除了while、do)不少而更灵活了。
    A),if语句。if在条件表达式内不用加圆括号,但强制加大括号。变化点if的条件表达可以有初始化语句
        if a:=1; a==0{}
    B),for语句
        for 表达式; 条件; 表达式{}     典型的C家族for
        for 条件{}                              C家族while的替代
        for{}                                      死循环
        for和关键字range结合遍历数组、slices、map。类似于js的for in、java 的for(val : list.values())、C#的foreach.
            for key,value range array{} 
    C),switch。明显的差别是go的switch case里不用谢braek。
        C1,case可以有条件表达式
            a:=1
            swich{
                case a>0&& a<10:
                    //dosomething
                default:
                     //dosomething
            }
        C2,case 连续匹配
            swich a{
                case 1,2,3:
                    //dosomething
                default:
                     //dosomething
            }
        C2,fallthrough.新关键字fallthrough让当前case匹配到下一个case里。。
            swich a{
                case 1:fallthrough
                case 2:fallthrough
                case 3:fallthrough
                    //dosomething
                default:
                     //dosomething
            }
        C3,go的switch也有if语句一样的初始化语句
            swich a:=1;a{}
分享到:
评论

相关推荐

    Go语言圣经,golang学习入门到精通

    Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的语言。它旨在提高编程效率,简化并发编程,并强调简洁的编程哲学。Go语言的设计受到了多门经典编程语言的影响,如C语言、...

    go语言编程,Go语言程序设计(英文版),学习 Go 语言(Golang),golang-china读书笔记

    Go语言,也被称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。自2009年发布以来,Go语言因其简洁的语法、高效的性能以及对并发编程的良好支持,受到了广大开发者的欢迎...

    GO语言教程学习 go语言语言介绍总结全攻略.docx

    《Go语言教程》是一本全面而深入的Go语言学习指南,旨在帮助读者从零开始掌握Go语言的精髓。本教程从基础语法、函数与并发编程、结构体与接口、文件操作与网络编程等多个方面进行了详细介绍,涵盖了Go语言的核心特性...

    go语言学习.zip

    go语言基础入门学习文档以及go语言并发学习的一些案例总结,我是一个两年多的Java开发工程师,从18年开始,开始接触容器化kubernetes这一块的项目,一开始是做了一个Java对接k8s启动pod,管理pod的平台。今年决定对...

    Go语言15套教程(百度网盘)

    #### 01 Go语言基础(一) - **Go语言简介**:介绍Go语言的发展历史、设计理念及其优势特点。 - **环境搭建**:指导如何在Windows/Linux/MacOS环境下安装Go语言环境,并配置环境变量。 - **基本语法**:包括变量...

    Go语言高级编程

    书的附录部分提供了Go语言常见问题的总结、参考资料以及作者柴树杉的简介,这些都是读者在深入学习Go语言时可以参考的重要信息。 本书《Go语言高级编程》适合已经有Go语言基础,希望通过高级主题进一步提升技能的...

    Go语言101.pdf版

    Go语言101.pdf版 Go语言101.pdf版是Go语言入门指南,涵盖了Go语言的基本...Go语言101.pdf版涵盖了Go语言的方方面面,包括基本概念、语法、语义、标准库和高级主题等多方面的知识点,是一本非常实用的Go语言入门指南。

    Go 学习笔记 第四版 pdf

    根据提供的信息,我们可以总结出这份文档是关于Go语言学习笔记的部分内容,主要涵盖了Go语言的基础概念、语法结构、数据类型以及并发模型等关键知识点。以下是对这些知识点的详细解析: ### Go语言概述 Go(也称作...

    GO语言学习总结(package,function).pdf

    GO语言学习总结(package,function).pdf

    【文件夹】Go语言并发之道.pdf

    理解Go语言如何解决并发难以编写正确这一根本问题。 学习并发与并行的关键性区别。 深入到Go语言的内存同步原语。 利用这些模式中的原语编写可维护的并发代码。 将模式组合成为一系列的实践,使你能够编写大规模...

    Go语言最佳入门手册

    这一章节总结了Go语言的基础知识,为后续深入学习奠定了基础。 #### 二、安装与运行环境 **2.1 平台与架构** Go语言可以在多种操作系统上运行,包括Linux、macOS以及Windows等。对于不同的操作系统,Go语言提供了...

    手撕Go语言v1.1.pdf

    Go语言(又称Golang)是一种静态类型的编程语言,由Google工程师Robert Griesemer、Rob Pike及Ken Thompson在2007年开始设计并开发,于2009年正式发布。它被设计成一种简洁、高效且易于学习的语言,旨在解决现代软件...

    Go语言教程及案例学习.docx

    ### Go语言教程及案例学习知识点总结 #### 一、Go语言简介 Go语言,又称为Golang,是由Google开发的一种开源编程语言。它以其简洁、高效的特点受到开发者的喜爱,并被广泛应用于网络服务、微服务架构等领域。Go...

    Python到Go语言之路

    总结起来,本文通过作者个人的经历,展示了一名Python开发者如何通过阅读文档、实践项目以及学习相关资源,成功地将Go语言融入到自己的技术栈中。作者强调了在学习Go时需要注意的几个关键点,并提供了一系列的学习...

    Go语言技术参考手册.docx

    - **背景**: Go语言,又称Golang,是由Google的Robert Griesemer、Rob Pike及Ken Thompson开发的一种静态强类型、编译型语言。 - **特点**: - 内存安全 - 垃圾回收(GC) - 结构形态 - CSP-style并发计算 - **...

    Go语言快速入门 视频教程,10天学会GO,学GO这个就够了

    对于想要学习Go语言的初学者来说,这份教程提供了一个明确的学习路径,不仅包括了理论知识的学习,还提供了实际操作的机会,是一个非常宝贵的资源。同时,通过学习Go语言,还可以为进一步探索区块链等前沿技术领域...

    Go-一个使用golang开发的开源wiki系统。

    Go语言,又称为Golang,是由Google公司于2009年推出的一种静态类型的、编译型的、并发型的、垃圾回收的编程语言。它由Robert Griesemer、Rob Pike和Ken Thompson设计,目标是提供一种简单易学、高效能、并发友好的...

Global site tag (gtag.js) - Google Analytics