惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
The GitHub Blog
The GitHub Blog
小众软件
小众软件
美团技术团队
博客园 - 司徒正美
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
大猫的无限游戏
大猫的无限游戏
罗磊的独立博客
Recent Announcements
Recent Announcements
酷 壳 – CoolShell
酷 壳 – CoolShell
D
Docker
J
Java Code Geeks
Last Week in AI
Last Week in AI
V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
V
V2EX
C
Check Point Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog

博客园 - 网魂小兵

Docker for MAC SqlServer将没有log文件的数据库文件附加到服务器中 [mongodb-10gen]ubuntu下安装方法 [GO编程]GO编程环境 IE6 css fixed Cookie标注 [node.js]小释 跟我一起学习ASP.NET 4.5 MVC4.0(六) 跟我一起学习ASP.NET 4.5 MVC4.0(五) 跟我一起学习ASP.NET 4.5 MVC4.0(四) 跟我一起学习ASP.NET 4.5 MVC4.0(三) 跟我一起学习ASP.NET 4.5 MVC4.0(二) 跟我一起学习ASP.NET 4.5 MVC4.0(一) VS11在Win8下的安装和体验 Win8安装体验 ASP.NET MVC4.0展望 .NET命名规范和开发约定 安装TFS2010的注意事项 VS2010类模板更改,增加版权等等信息
[GO编程] GO入门语法基础
网魂小兵 · 2013-11-13 · via 博客园 - 网魂小兵

学习一门语言,首先肯定是要熟悉他的语法,然后才可以进行编程开发,虽然本人使用过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 = "\n"
 )


 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的编程方法,希望能够早点适应这种编写方法,熟悉他的标准库。