学习一门语言,首先肯定是要熟悉他的语法,然后才可以进行编程开发,虽然本人使用过C++,.net等语言,不过对于GO的一些新特性还是需要多多熟悉,否则即使看得懂也写不出程序来。今天我们就开始我们的GO Hello World!
当我们新建一个GO MODULE,就会看到一个main.go,具体代码如下所示:
1
2
3
4
5
6
7
8
|
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中大写字母开头的为全局对象,开一在包外部调用,小写的只能在包内部调用。我们再看一下代码,这样能够更好的理解其中的一些用法,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
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,这样代表下一个会根据第一个进行计算得到常量值。
1
2
3
4
5
6
7
8
9
10
11
12
|
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的编程方法,希望能够早点适应这种编写方法,熟悉他的标准库。
本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/p/go-syntax-basic.html,如需转载请自行联系原作者