您的位置:首页 > 编程语言 > Go语言

Go语言基础语法学习笔记[1]

2017-02-09 14:10 706 查看
行分隔符:

Go语言中,一行代表一个语句结束,不需要以分号“;”结尾,如果需要在一行写多个语句,则每个语句需要使用分号进行区分,不鼓励这样做。

 

注释:
//
单行注释

/*
   
多行注释

 */

 

标识符:

标识符名称由
字母/数字/下划线
组成,开头第一个字母必须是字母或者下划线,标识符不能与关键字/保留字相同。

 

关键字/保留字:

Go 代码中会使用到的 25
个关键字或保留字:

break
default
func
interface
select
case
defer
go
map
struct
chan
else
goto
package
switch
const
fallthrough
if
range
type
continue
for
import
return
var
除了以上介绍的这些关键字,Go
语言还有 36
个预定义标识符:

append
bool
byte
cap
close
complex
complex64
complex128
uint16
copy
false
float32
float64
imag
int
int8
int16
uint32
int32
int64
iota
len
make
new
nil
panic
uint64
print
println
real
recover
string
true
uint
uint8
uintptr
 

Go语言中定义的数据类型:

类型
描述
布尔型
布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
数字类型
整型 int 和浮点型 float,Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。

类型
描述
uint8
无符号 8 位整型 (0
到 255)
uint16
无符号 16 位整型 (0
到 65535)
uint32
无符号 32 位整型 (0
到 4294967295)
uint64
无符号 64 位整型 (0
到 18446744073709551615)
int8
有符号 8 位整型 (-128
到 127)
int16
有符号 16 位整型 (-32768
到 32767)
int32
有符号 32 位整型 (-2147483648
到 2147483647)
int64
有符号 64 位整型 (-9223372036854775808
到 9223372036854775807)
float32
IEEE-754 32位浮点型数
float64
IEEE-754 64位浮点型数
complex64
32 位实数和虚数
complex128
64 位实数和虚数
byte
类似 uint8
rune
类似 int32
uint
32 或 64

int
与 uint 一样大小
uintptr
无符号整型,用于存放一个指针
 
字符串类型
字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。
派生类型
指针类型(Pointer)

数组类型

结构化类型(struct)

Channel 类型

函数类型

切片类型

接口类型(interface)

Map 类型
 

声明变量:

使用默认值赋值变量:var v_name v_type

根据赋值自动判断变量类型:var v_name = value

定义的同时进行赋值:var v_name v_type = value

使用“:=”进行定义,省略var关键字,注意“:=”左侧的变量名不能为已声明的变量名,不需要指定变量类型:v_name
:= value

例如:

var a int;

var b = 3;

var c int = 3;

d := 4
var {   
//这种写法一般用于全局变量声明

    e int

    f bool

}

var g, h, i int = 1, 2, 3;

j, k := 10, "abc";
 

交换变量:

var a, b int = 3, 5;    // a = 3, b = 5

a, b = b, a;                
// a = 5, b = 3

 

空白标识符(“_”):
空白标识符用于抛弃值,例如 _ , b = 1, 2;
执行后,b的值为2,1被抛弃。

空白标识符是一个只写变量(不能读),所以不能得到它的值。这么设计的原因是Go语言中必须使用所有被声明的变量,但是有时你不需要使用一个函数的所有返回值,这种情况下需要使用空白标识符来占位,例如:

func main() {

   var _, b =getError();

  fmt.Println(b);

}

 

func getError() (int, string) {

var errorNumber int = 1;

var errorMsg string = "Thisis an error";

return errorNumber, errorMsg;

}

如果我们不使用某个声明的变量(例如注释掉上面的fmt.Println(b)),则会报以下错误:

D:\Programming\GoWork>go run HelloWorld.go

# command-line-arguments

.\HelloWorld.go:12: b declared andnot used
 

常量定义:

const identifier [type] = value

例如:

const a string = "abc"

const a = "abc"

const a, b = 1, 2

定义枚举:

const (

    Unknown = 0

    Female = 1

    Male = 2

)

iota是一个特殊常量,用于递增const常量的值(由于默认const类型的值不会递增)。iota的特性:

在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。

例如:

const (

    Unknown =iota

    Female =iota

    Male = iota

)

const (

    Success =iota

    Failure =iota

    Exception =iota

    Others =iota

)

const (

    TestA = 10

    TestB

    TestC

)

 

func main() {

  fmt.Println(Unknown, Female, Male)                 
// output: 0 1 2

  fmt.Println(Success, Failure, Exception, Others)   
// output: 0 1 2 3

  fmt.Println(TestA, TestB, TestC)                   
// output: 10 10 10

}

再看一个例子:

func main() {

    const (

        a =iota    
//0

        b               
//1

        c               
//2
       
d ="ha"   //独立值,iota += 1

        e              
//"ha"   iota += 1

        f =100    
//iota +=1

        g              
//100  iota +=1
       
h =iota   //7,恢复计数

        I              
//8

    )

   fmt.Println(a,b,c,d,e,f,g,h,i)   // 0 1 2 ha ha 100 100 7 8

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息