Go 其一 基础内容

  艺多不压身,学习一下最近蛮火的Go语言,整理一下笔记。相关Code和笔记也放到了Git上,传送门linux

 

1.从Hello world开始git

  1.  GOPATH 1.8版本默认在%USERPROFILE%/go
  2.  命令build命令 go build xxx.go, 运行命令go run xxx.go
  3.  Go默认状况下会使用静态连接, 编译好的文件能够直接运行
  4.  应用程序入口必须是main包, package main 必须是main方法:func main()  文件名不必定是main.go
  5.  Go中main函数不支持任何返回值,经过os.Exit来返回状态 
  6. main函数不支持传入参数,在程序中直接经过os.Args获取命令行参数

 

 

2.测试程序,变量,常量github

  1.  源码文件必须以_test结尾: xxx_test.go
  2. 测试方法名以Test开头: func TestXXX(t *testing.T) {...}
  3. 运行命令 go test -v .\first_test.go
  4.  Go支持多种复制关系以及必定的类型推断,但在2.0版本后将会不推荐甚至禁用一部分写法,目的是code的风格统一
  5.  同一个文件夹下不一样go文件的package要相同,不然会报错 can't load package: package...
  6.  在一个赋值语句中能够对多个变量进行同时赋值 例如: a,b=b,a

 

  常量定义方面windows

// 1.快速设置连续值
const (
Monday = iota + 1
Tuseday
Wednesday
...
Sunday
)

// 2. 表状态的bite位也能够这么玩
Const (
Open = 1 << iota
Close
Pending
)

  

 

3.基本数据类型数组

bool
string
int int8 int16 int32 int64
uint unit8 unit16 unit32 unit64 uintptr
byte // alias for unit8
rune // alias for int32, represents a Unicode code point !!!这个类型之后会详详细介绍,暂且放一放
float32 float64
complex64 complex128函数

  1. 默认类型根据运行的机器的位数决定使用多少位。
  2. Go语言不容许任何隐式类型转换
  3. 别名和原有类型也不能进行隐式类型转换

类型的预约义值
  例如:
    math.MaxInt64
    math.MaxFloat64
    math.MaxUnit32学习

指针类型 于其余主要变成语言的差别
  1. 不支持指针运算
  2. string是值类型,其默认的初始化值为空字符串,而不是nil测试

 

 

4.运算符ui

算术运算符spa

  1. 经常使用运算符如 + - * / % ++(后置) --(后置)与别的语言没什么差别
  2. Go语言中没有前置的 ++ -- (先自增,再引用)

比较运算符
  经常使用运算符与别的语言没什么差别,但什么对象能够比较稍有差别,往后补充

  例:用==比较数组
    相同维数且含有相同个数元素的数组才可比较
  每一个元素都相等才相等

逻辑运算符
与别的语言没由什么差别

位运算符
&    |   ^    <<    >>没什么差别
  与其余语言的差别 &^ 按位置零 (按位清零) 运算符
    1 &^ 0 -- 1
    1 &^ 1 -- 0
    0 &^ 1 -- 0
    0 &^ 0 -- 0
  该运算符这样计算, 只要操做符右边的运算数上的位置为1,不管左边对应位置上的运算数是多少都清零。
右边操做符上的操做数为0时则左边原来是什么就显示什么。


注意,使用Go语言就要使用Go的特色,写出真正的Go程序而不是将其余语言翻译成Go.

 

5.条件和循环

循环
  Go语言仅支持循环关键字for
  例 for j:= 7; j <= 9; j++ (不须要括号括起来)

while条件循环 while (n < 5)
Go版本
n := 0
for n < 5 {
n++
fmt.Println(n)
}

无限循环 while(true)
Go版本
n := 0
for {
...
}

  

if条件

例:
if condition {
...
} else {
...
}

if condition - 1 {
...
} else if condition - 2 {
...
} else {
...
}

  

区别:

  1. condition表达式结果必须为布尔值(没有隐式转换,int是不能够的)
  2. 支持变量赋值:
if vardeclaration; condition {
// code to be executed if condition is true
}

  

switch条件与其余语言的差别

  1. 条件表达式不限制为常量或者整数
  2. 单个case中,能够出现多个结果选项,使用逗号分隔
  3. 与C语言等规则相反,Go语言中不须要使用break来明确退出一个case
  4. 能够不设定switch以后的条件表达式,在此种状况下,整个switch结构与多个if...else...的逻辑做用等同
写法举例:
1.
switch os := runtime.GOOS; os {
case "darwin":
fmt.Println("OS X.")
//break
case "linux":
fmt.Println("Linux.")
default:
// freebsd, openbsd,
// plan9, windows...
fmt.Printf("%s.", os)
}

2.
switch {
case 0 <= Num && Num <= 3:
fmt.Prinft("0-3")
case 4 <= Num && Num <= 6:
fmt.Prinft("4-6")
case 7 <= Num && Num <= 9:
fmt.Prinft("7-9")
}
相关文章
相关标签/搜索