go基础知识

Go  Mac默认安装目录  /usr/local/go/

Go是一个高效、静态类型, 但是又具有解释语言的动态类型特征的系统级语法。

Go是一个开源项目,采用BSD授权协议

mark-and-sweep 垃圾内存自动回收

需要安装Mercurial版本管理系统(可以输出hg名字检测是否安装)

sudo easy_install mercurial

 

以下命令会创建一个go目录。切换到相应目录,并且确保当前位置不存在go目录,运行命令:

  $ hg clone -r release https://go.googlecode.com/hg/ go

 

 

Go 语言最主要的特性:

  • go可以快速编译, 同时具有垃圾内存自动回收功能,并且还支持运行时反射。
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

 

 

Print 和 Println   打印输出  跟C 类似

 

需要指定包名  package main

导入函数         import  “fmt

开始写函数    func main(){   fmt.PrintIn(‘输出:自动添加\n 换行符’); }

                      func main(){   fmt.Print(‘输出:手动添加\n 换行符\n’); }   //与上面的形式一样

 

$ go run hello.go  执行go脚本

 

$ go build hello.go  命令来生成二进制文件

 

注意

需要注意的是 { 不能单独放在一行,所以以下代码在运行时会产生错误:

 

 

下面的例子是Unix系统中"echo"命令的简单实现:

 

 

s := ""; 操作符":="将在Go中声明同时进行初始化一个变量时会经常使用。下面的代码是在"for"中声明并 初始化变量:

  22        for i := 0; i < flag.NArg(); i++ {

"flag"包会解析命令行参数,并将不是flag选项的参数保存到一个列表中。可以通过flag的参数列表 访问普通的命令行参数。

 

Go语言的"for"语句和C语言中有几个不同的地方:第一,for是Go中唯一的循环语句,Go中没有while或 do语句;第二,for的条件语句并不需要用小括号包起来,但是循环体却必须要花括弧,这个规则同样适用于 if和switch。后面我们会看到for的一些例子。

在循环体中,通过"+="操作符向字符串"s"添加要命令行参数和空白。在循环结束后,根据命令行是否有"-n"选项, 判断末尾是否要添加换行符。最后输出结果。

 

值得注意的地方是"main.main"函数并没有返回值(函数被定义为没有返回值的类型)。如果"main.main" 运行到了末尾,就表示“成功”。如果想返回一个出错信息,可用系统调用强制退出:

          os.Exit(1)

"os"包还包含了其它的许多启动相关的功能,例如"os.Args"是"flag"包的一部分(用来获取命令行输入)。

 

 Go语言中有一些通用的类型,例如"int"和"float",它们对应的内存大小和处理器类型相关。同时, 也包含了许多固定大小的类型,例如"int8"和"float64",还有无符号类型"uint"和"uint32"等。 需要注意的是,即使"int"和"int32"占有同样的内存大小,但并不是同一种数据类型。不过 "byte"和"uint8"对应是相同的数据类型,它们是字符串中字符类型。

 

 

 

 

 

 

posted @ 2019-11-08 14:57  玲汐  阅读(345)  评论(0编辑  收藏  举报