zoukankan      html  css  js  c++  java
  • [GO编程] GO入门语法基础

    学习一门语言,首先肯定是要熟悉他的语法,然后才可以进行编程开发,虽然本人使用过C++,.net等语言,不过对于GO的一些新特性还是需要多多熟悉,否则即使看得懂也写不出程序来。今天我们就开始我们的GO Hello World!

    当我们新建一个GO MODULE,就会看到一个main.go,具体代码如下所示:

     package main
    
     import "fmt"
    
    
     func main() {
           fmt.Printf("Hello, world!")
     }
    

    这个就是GO的Hello World程序,熟悉.NET程序的都知道,在.NET中以命名空间来区分不同的类型,组织代码,而在GO中,则使用package的形式来组织代码。在引用其他包时,如果没有特殊定义需要带上包名称。  

    其中import一看就知道,.NET中的using,也可以指定包的别名。也可以省略包名称,需要使用"_"作为别名。因为每一个包都有一个默认的init函数,有时候引入的时候不调用里面的方法,只想执行init方法可以使用“.”来忽略。

    当然每一个应用程序都有一个特定的入口即main,那个方法不返还任何值。声明方法使用func,在GO中使用结构来定义一个实体,使用type T struct格式。GO也是面向对象的,当然也具备面向对象的一些功能,例如重写,集成等等。在GO中另一个非常重要的就是接口,GO中的接口只能定义方法,而且只要有结构实现了接口中定义的方法就表明实现了这个接口,这个在开发过程中真的有点不适应。

    在GO中大写字母开头的为全局对象,开一在包外部调用,小写的只能在包内部调用。我们再看一下代码,这样能够更好的理解其中的一些用法,代码如下:

     package main
    
     import (
         "os"
         "flag"  // command line option parser
     )
    
    
     var omitNewline = flag.Bool("n", false, "don't print final newline")
    
    
     const (
         Space = " "
         Newline = "
    "
     )
    
    
     func main() {
         flag.Parse()   // Scans the arg list and sets up flags
         var s string = ""
         for i := 0; i < flag.NArg(); i++ {
             if i > 0 {
                 s += Space
             }
             s += flag.Arg(i)
         }
         if !*omitNewline {
             s += Newline
         }
         os.Stdout.WriteString(s)
     }
    

    在GO中声明变量和VB有点像,使用var声明变量,最后加类型,当然也可以使用使用“:=”格式来直接一步到位。声明常量使用const,枚举也使用这个,不过枚举的第一个值需要注明iota,这样代表下一个会根据第一个进行计算得到常量值。

    type ByteSize float64
    const (
        _ = iota  // ignore first value by assigning to blank identifier
        KB ByteSize = 1<<(10*iota)
        MB
        GB
        TB
        PB
        EB
        ZB
        YB
    )
    

    GO还有一个很大的优点就是函数可以返回多个值,也可以返回指定的值,这是一个相当好用的,不需要像.NET中那样,写很多个out。这一篇主要介绍一下GO的基础知识,下一篇我们将慢慢的进一步解读GO的编程方法,希望能够早点适应这种编写方法,熟悉他的标准库。  

  • 相关阅读:
    nginx Server names
    ES6--变量的声明及解构赋值
    Android ListView and Tips.
    Eclipse自己定义keystore
    POJ 1129 Channel Allocation(DFS)
    机器学习笔记十三:Ensemble思想(上)
    设计模式——享元模式具体解释
    老猪带你玩转自定义控件三——sai大神带我实现ios 8 时间滚轮控件
    老猪带你玩转android自定义控件二——自定义索引栏listview
    android动手写控件系列——老猪叫你写相机
  • 原文地址:https://www.cnblogs.com/xdotnet/p/go-syntax-basic.html
Copyright © 2011-2022 走看看