700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > go语言学习初探(二)基础语法

go语言学习初探(二)基础语法

时间:2018-11-15 20:20:36

相关推荐

go语言学习初探(二)基础语法

变量声明

var v1 intvar v2 stringvar v3 [10]intvar v4 []intvar v5 struct {f int}var v6 *intvar v7 map[string] intvar v8 func(a int) int

基本变量类型分为:int、string、数组、切片数据(动态长度数组)、结构体、指针、Map、函数等。

var 简化写法,例子:

var (v1 intv2 string)

变量初始化

var v1 int = 10var v2 = 10v3 := 10

v1 为正常方式。v2 & v3 可以自动推导类型。v3的方式不能作用于全局变量。

警告::= 左侧的变量不可以提前声明,比如 var v1 = 10; v1 := 10;该写法会导致编译器报错。

匿名变量

package helloworldfunc getName() (string, string, string, string) {firstName := "firstName"lastName := "lastName"nickName := "nickName"middleName := "middleName"return firstName, lastName, nickName, middleName}

package mainimport ("fmt")func main(){_, _, _, middle := getName()fmt.Println(middle)}// print -> "middleName"

常量

package mainimport ("fmt")func main(){const NAME = "name"fmt.Println(NAME)}

常量是指编译期间就已知且不可改变的值。常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等。

预定义常量

truefalseiota // 常量计数器

枚举

const (Sunday = iotaMonday Tuesday Wednesday Thursday Friday Saturday numberOfDays // 这个常量没有导出)

Go 语言中,以大写字母开头的常量在包外可见。numberOfDays 该常量只能在包内可用。

数据类型

基础数据类型

布尔类型:bool整型:int8、byte、int16、int、uint、uintptr等浮点类型:float32、float64复数类型:complex64、complex128字符串:string字符类型:rune错误类型:error

int8:取值范围为 -128~127

复合数据类型

指针(pointer)数组(array)切片(slice)字典(map)通道(chan)结构体(struct)接口(interface)

数值运算

+-*/%

比较运算符

>>=<<===!=

位运算

x << y 左移 124 << 2 // 结果为496x >> y 右移 124 >> 2 // 结果为31x ^ y 异或 124 ^ 2// 结果为126x & y 与124 & 2// 结果为0x | y 或124 | 2// 结果为126^x取反 ^2// 结果为-3

遍历字符串

package mainimport ("fmt")func main() {str := "hello 世界!"for _, s := range str {fmt.Println(string(s))}}

数组及数组切片

arr1 := [5]int{1,2,3,4,5}arr2 := []int{}

数组长度在定义之后,不能更改。数组切片可以。

流程控制

条件语句:if-else & else-if选择语句:switch & case & select循环语句:for & range跳转语句:goto其他关键字:break & continue & fallthrough

条件语句 if-else

package mainimport ("fmt")func main() {a := 1if a > 3 {fmt.Println("a > 3")} else {fmt.Println("a > 3 is fail")}}

警告:有返回值的函数中,if-else控制语句中不允许直接return

选择语句 switch

package mainimport ("fmt")func main() {i := 0switch i {case 0:fmt.Println("0")case 1:fmt.Println("1")case 2:fmt.Println("2")}}// print -> "0"

循环语句 for

package mainimport ("fmt")func main() {for i := 0; i < 10; i++ {fmt.Println(i)}}// print -> 1 ~ 9

函数

func (参数列表)(返回值列表) {函数体 & 返回语句}

不定参数

package mainimport ("fmt")func myFunc(args ...int) {for _, i := range args {fmt.Println(i)}}func main() {myFunc(1, 2, 3, 4)}// print -> 1 2 3 4

警告:...type格式的类型只能作为函数的参数类型存在,并且必须是最后一个参数

匿名函数

func(a, b int) int{}// 执行匿名函数func(a,b int) int{}(1, 2)// 赋值f := func(a ,b int) int{}

闭包

package mainimport ("fmt")func main() {i := 5f := func() func() {j := 10return func() {fmt.Println(i, j)}}()f()i = 10f()}// print -> 5 10// print -> 10 10

错误处理

package mainimport ("errors""fmt")func main() {err := errors.New("this is a bug")fmt.Println(err)}// print -> "this is a bug"

下一篇 go语言学习初探(三)面向对象编程

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。