【Go】golang初级语法篇

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30604453/article/details/82497549

1. Go 基础

package main   //每一个go文件开头都应该声明包名,一个go项目需要有一个main包

import (   //导入该go文件依赖的外部包
    "fmt"
)

func main() {  //main是一个特殊函数,是程序的主入口
    
}


 

2. Go 变量
声明变量的三种方法
2.1  单个变量声明

var age int   //变量声明,不赋值,需要指明变量类型(int/string/bool/...) Go自动赋予初始化值
var age int = 23  //声明变量并且初始化
var age = 23  //声明变量并且初始化,Go自动推断变量的类型


2.2  多个变量

var a,b int
var a,b int = 2,3
var (
  name = "Jack"
  age = 20
  height int
)


2.3 简洁声明  := 操作符要求左边有未被声明过的变量名

    a := 10
    name,age := "Jack",20


 

3. Go 数据类型
3.1 数字
  int8 / int16 / int32 / int64 / int  有符号整数
  unit8 / unit16 / unit32 / unit64 / unit  无符号整数(正数)
  float32 / float64 浮点数
  complex64 / complex128  复数
  byte 相当于unit8
  rune 相当于int32
3.2 字符串
  string
3.3 其他
  bool
3.4 type 
  type myString string //type用于声明新的数据类型,myString相当于string的别名


 

4. Go 常量

const a = 10  //常量在编译时确定,所以不能将函数返回值赋值给常量
const a int = 10

5. 函数
5.1 传入参数需要写明该参数的数据类型,有返回值需要写明该返回值的数据类型

func handler(a int,b string) bool {
   ...
}


5.2 若传入参数数据类型一致,可以只写最后一个参数的数据类型

    func handler(a,b int) bool {
      ...
    }


5.3 无参数无返回值

    func handler(){
      ...
    }


5.4 有多个返回值时,需要将多个返回值用括号括起来

    func handler(a,b int)(int,int,float64){
      ...
      return var1,var2,var3
    }
    //命名返回值,return不需要显式返回任何职,默认返回 var1,var2,var3
    func handler(a,b int)(var1 int,var2 int,var3 float64){
      ...
      return
    }


5.5 空白符_的妙用
    以上函数为例,返回了三个数据,空白符_可以丢弃某个返回值

    a,b,c := handler(arg1,arg2)
    _,b,c := handler(arg1,arg2)
    a,_,c := handler(arg1,arg2)
    a,_,_ := handler(arg1,arg2)

5.6 可变参数函数 参考链接 https://studygolang.com/articles/12173
   如果函数最后一个参数被记作 ...T ,这时函数可以接受任意个 T 类型参数作为最后一个参数。

   func find(num int, nums ...int) {
      fmt.Printf("type of nums is %T\n", nums)
      found := false
      for i, v := range nums {
          if v == num {
              fmt.Println(num, "found at index", i, "in", nums)
              found = true
          }
      }
      if !found {
          fmt.Println(num, "not found in ", nums)
      }
      fmt.Printf("\n")
  }
  func main() {
      find(89, 89, 90, 95)
      find(45, 56, 67, 45, 90, 109)
      find(78, 38, 56, 98)
      find(87)
  }

6. Go 包package的使用

   -src   //Go工作区
    -myproject  //项目名
     main.go  //主入口文件
     -package1  //包
      tool1.go  //包内文件
      tool2.go
     -package2  //包
      dev1.go
      dev2.go

在上述项目结构中(-xxx 代表文件夹xxx)
6.1 main.go 文件:
首行应该 声明 package main
应该包含main函数作为程序的主入口
6.2 tool1.go/tool2.go 文件:
首行应该声明 package package1 
6.3 dev1.go/dev2.go 文件
首行应该声明 package package2
6.4 包中的函数或变量想暴露给外部使用,必须首字母大写
6.5 引用外部包
main.go 文件:

import (
  "fmt"
  "myproject/package1"
  "myproject/package2"
)

6.6 如何使用外部包的函数/变量

    package1.Area()
    package1.Pi

6.7 如何导包但不使用包
导包但没有使用该包,在编译时是会报错的,在开发阶段可能会先把包先导入,那如何导包但不使用而不报错呢,巧用空白符_

import (
  "fmt"
  _"myproject/package1"
)

7. Go init函数

func init(){ //特殊函数,一个文件可以有一个init函数。一般用于检查数据类型是否符合要求
 ...
}


8. Go if...else语句
跟其他语言不同,Go语言对于if...else语句有严格的语法要求
8.1 if条件语句不需要括号
8.2 else不能另起一行,必须紧跟if的右括号}处于同一行
8.3 哪怕{}里面的执行语句只有一句,{}也不能被忽略
  实例1

  if i%2==0 {
    ....
  }


  实例2

  if i==10 {
   ...
  } else {
   ...
  }

9. Go for循环语句
Go只有一种循环语句 就是for循环
  实例

  for i:=0;i<10;i++ { //一般的循环
    ...
  }
  for i<10 { //相当于while循环
  
  }
  for { //无限循环,一般情况下不要使用
    ...
  }


break/continue可以与循环配合使用
break 终止循环
continue 跳出当前循环,进入下一个循环

10. Go switch语句
实例1:有表达式

    switch num {
      case 1:
        ...
      case 2:
        ...
      case 3,4,5:
        ...
      default:
        ...
    }


实例2:无表达式

   switch {
     case num>=0 && num<=50 :
      ...
     case num>=51 && num<=100:
      ...
     case num>=101:
      ...
   }


实例3:fallthrough
 switch语句从上往下检索,当找到满足条件的case便会结束往下检索,fallthrough语句可以让switch继续往下检索

 switch {
   case num>=0 && num<=50 :
    ...
    fallthrough
   case num>=51 && num<=100:
    ...
   case num>=101:
    ...
 }

猜你喜欢

转载自blog.csdn.net/qq_30604453/article/details/82497549