Go语言学习历程——Go语言基础语法入门

wujunqi1996 · · 678 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

GO语言特性

开发者使用编程语言的三大分类(执行速度,简易程度,开发难度)

1.执行速度快、编译速度慢(编译型):C,C++

2.执行速度较慢,编译速度快(解释型):JAVA,.NET

3.执行速度慢,开发难度小(动态脚本):Python,PHP


GO语言在三个条件做了平衡:易于开发,快速编译,高效执行



1.helloworld


package main


import "fmt"


func main {

fmt.Println("hello world")

}



注意:

1.如果需要将程序编译成二进制程序,要将包名写成main包


第一个Go程序解读:

1.package

Go源文件开头必须使用package声明代码所属包,包是Go代码分发的最基本单位。若程序需要运行,则包名必须为main。

2.import

import用于导入程序所依赖的所有包,此程序依赖fmt包。

3.func

func用于定义函数,main函数是程序的入口,若程序需要运行必须声明main函数,main函数无参数也无返回值

4.fmt.Println

调用fmt.Println函数将参数信息打印到控制台

编译&运行:

# go build helloworld.go       (编译出helloworld.exe文件)

# go build -o test.exe helloworld.go   (test.exe文件)

# go run helloworld.go         (编译并运行helloworld.exe文件)



2.go 变量定义,变量限定适用范围

变量是指堆一块存储空间定义名称。

变量定义方式:

func main() {

var name string = "kk"//定义了类型也定义了初始值

var zerostring string // 定义变量类型,但不初始值

var typestring = "kk" //定义变量省略类型,不能省略初始值


//短声明(必须在函数内使用)

shortstring := "kk"

fmt.Println(name,zerostring,typestring,shortstring)

}


变量需要先定义再使用,直接使用会报错 

var name string = "abc"


name = "bca"


批量定义

var (

变量名1 变量类型1 = 值1

变量名2 变量类型2 = 值2

)


变量作用域:

变量查找会从函数内查找,没有才会去查找函数外的相同变量 

子块可以覆盖父块中使用的变量


变量标识符:

标识符:程序中定义的名字,变量名,常量名字,自定义类型,接口

规范:

1.必须满足:组成只能由非空的unicode编码字符串,数字,下划线组成

2.必须满足:必须以unicode编码的字符串或下划线开头(不能以数字开头)

3.必须满足:不能与go的关键字冲突(package,func,var)

建议:

1.Ascill编码(a-z,A-Z)数字,下划线

2.变量使用驼峰式

myName

3.与go内置变量不要冲突


函数级别:

func main {

var msg string = "hello workd"

fmt.Println(msg)

}


包级别:

var packageVar string = "package Var"

func main {

var msg string = "hello workd"

fmt.Println(msg, packageVar)

}


子块级别:

var packageVar string = "package Var"

func main {

var msg string = "hello workd"

{

var blockvar string = "block"

fmt.Println(packageVar,blockvar)

}

fmt.Println(msg, packageVar)

}

}


3.go 常量

常量一旦定义后不能修改


常量定义:

①常量

package main


import "fmt"


const (

packName string = "package"

packMsg = "pack"

A = "test"

B  // 使用前一个常量的值进行初始化 B->A

C  // 使用前一个常量的值进行初始化 C->B

D = "test2"

E

F

)  //使用前一个常量的值进行初始化


func main() {

const name string = "abc" 

fmt.Println(name, B, C, E, F)

}


②枚举

package main


import "fmt"


func main() {

const (

Mon = iota //在常量内使用iota,初始化为0,每次调用+1

Tuesd

Wed

Thur

Fir

Sat

Sun

)

fmt.Println(Mon)

}


4.go 变量打印


 fmt.Printf("%T, %v, %#v", name, name, name)

 占位符

 %T:打印变量类型

 %v:按某种格式打印变量

 %#v:按某种格式打印变量


5.go 数据类型


布尔类型:

package main


import "fmt"


func main() {

isGirl := false

fmt.Println("%T,%#v", isGirl, isGirl)

}


整数类型:

//int

/int8,int16,int32,int64

常用操作:

1.算数运算符:+,-,*,/,%,++,--

2.关系运算符:>,<,==,!=

3.位运算符:&,|

4.赋值运算符:=,+=,-=,*=


浮点数类型:

package main


import (

"fmt"

)


func main() {

var height float32 = 1.68


fmt.Printf("%T %#v %f\n", height,height,height)

}


逻辑运算:

与:左操作数与右操作数为true,结果为true

或:左操作数与右操作数只要有一个为true,结果为true

非:取反 

package main


import "fmt"


func main() {

a, b, c, d =: true, true ,false ,false

fmt.Println("a, b", a && b) 

fmt.Println("a, c", a && c)

}

 

6.条件语句


①if语句

package main


import "fmt"


func main() {

var y string

fmt.Print("买西瓜么:")

fmt.Scan(&y)

fmt.Println("你输入的是", y)

if y == "yes" {

fmt.Println("买一个西瓜")

}

}


初始化子语句

可以在if语句中初始化语句块内的局部变量,多个语句之间使用逗号分隔(;)

if flag := true;flag {

fmt.Println("flag:",flag)

}


②选择语句switch case

package main


import "fmt"


func main() {

var y string

fmt.Print("请输入:")

fmt.Scan(&y)

switch y {

case "yes", "y":

fmt.Println("输入的是1")

case "no", "n":

fmt.Println("输入的是no")

default:

fmt.Println("2222")

}

}


7.循环语句for,break,continue

package main


import "fmt"


func main() {

for i := 0; i < 10; i++ {

fmt.Println("1234")

}

var index = 1

for index <= 10 {

if index == 5 {

break

}

if index == 6 {

continue

}

fmt.Println(index)

index++

}

}


for-range

用于遍历可迭代对象中的每个元素,例如字符串,数组,切片,映射,通道等

package main


import "fmt"


func main() {

var letters string

letters = "伍俊錡"

for _, k := range letters {

fmt.Printf("%q", k)

}

}


针对包含unicode字符的字符串便利,时需要使用for-range,range返回两个元素分别为字节索引和rune字符,可通过空白标识符忽略需要接受的变量。


类while,死循环


func main() {

for {

total += index

index ++

if index > 100 {

break

}

}

}








 






























有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:wujunqi1996

查看原文:Go语言学习历程——Go语言基础语法入门

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

678 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传