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

103 篇文章 0 订阅
11 篇文章 0 订阅


行分隔符:

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文本。

派生类型

    1. 指针类型(Pointer)
    2. 数组类型
    3. 结构化类型(struct)
    4. Channel 类型
    5. 函数类型
    6. 切片类型
    7. 接口类型(interface)
    8. 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

}


  • 68
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值