Golang语言学习

2019-11-05  本文已影响0人  Dozing

main函数类似是一个入口

  1. package是最基本的分发单位和工程管理中依赖关系的体现
  2. 每个Go语言源代码文件开头都拥有一个package声明,表示源代码文件所属代码包
  3. 要生成Go语言可执行程序,必须要有mainpackage包,且必须在该包下有main()函数
  4. 同一个路径下只能存在一个package,一个package可以拆分成多个源文件组成

Go工程中共有三个文件夹,分别是:srcpkgbin
src:存放Go源码文件
pkg:存放编译后的包文件
bin:存放编译后的可执行文件src目录需要手动创建,一般pkgbin目录不需要创建,编译时会自动创建。
由于当前章节视频中没有真正的执行install,所以代码直接放在工程目录下build暂时还没有报错。如果执行install的话就会报错了。

Go语言基础语言--import

主要有两种格式

第一种:

  import "package1"
  import "package2"
  import "package3"

第二种:

import  (
                "package1"
                "package2"
                "package3"
)

Go语言基础语法---import原理

gopackage.png

Go语言 基础语法---import别名," . "," _ "

GO语言--数据类型

一个字节是8位

  1. 整型,浮点型,复数,字符串和布尔型
  1. 派生类型
  1. 类型零值和类型别名
package main
type imooc int32
funct main(){
    var i imooc //imooc就是int32的别名
}
Golangbyte.png

Go 语言 变量与常量

(一)变量
  1. 单个变量声明和赋值

    (1). 变量的声明格式:var <变量名称> [变量类型]

    (2). 变量的赋值格式:<变量名称> = <值,表达式,函数等>

    (3). 声明和赋值同时进行:var <变量名称> [变量类型] = <值,表达式,函数等>

    (4). 分组声明格式:

    var (
        i int
        j float32
        name string
    ) //分组声明格式也可以同时赋值
    
  2. 同一行声明多个变量和赋值:var a,b,c int = 1,2,3 或者 a,b := 1,2

  3. 全局变量的声明必须使用var关键词,局部变量则可以省略

  4. 特殊变量下划线_ ----//作用把这个值相当于一个回收站,程序运行是不再使用

  5. Go语言中不存在隐式转换,类型转换必须是显式的

  6. 类型转换只能发生在两种兼容类型之间

  7. 类型转换格式:<变量名称> [:] = <目标类型>(<需要转换的变量>)

  8. 变量的可见性规则

    (1). 大写字母开头的变量是可导出的,也就是其它包可以读取的,是公用变量

    (2). 小写字母开头的就是不可导出的,是私有变量

(二)常量

(1) 常量定义形式和变量类型范围

代码示例:

//例子1 常量可以分组赋值
const(
         cat string = "cat"
         dog = "dog"
)

//例子2 
const apple, banana string = "apple","banana" //显式单行定义多个常量
const apple, banana  = "apple","banana" //隐式单行定义多个常量

//例子3 
const a string = "apple"
const b = len(a) //表达式定义常量。只能为内置函数,自定义函数不能定义

iota只能在常量定义中使用,不能在函数体中使用

(2) 特殊常量iota的使用

iota只能在常量定义中使用,不能在函数体中使用

//1. 跳值使用法
   const (
                a = iota
                b = iota
                - 
                c = iota     //c 的值为3
                )
                
//2.插队使用法
       const (
                a = iota
                b = 3.14
                c = iota     //c的值为2
                )
    
//3.表达式隐式使用法
           const (
                a = iota * 2    //a的值为0
                b                   //b的值为2
                c                   //c的值为4
                )
    
               const (
                a = iota * 2    //a的值为0
                b = iota * 3    //b的值为3
                c                   //c的值为6
                d                   //c的值为9
                )
                //隐式向上继承非空表达式
    
//4. 单行使用法
    
    const (
                a,b = iota ,iota + 3  //a的值为0,b的值为3 同一行iota不会计数加1
                c,d                                //c的值为1,的值为4
                f = iota                        //f的值为2
                )
   

GO语言运算符

GO控制语句:

  1. 条件语句if if else 嵌套if else if
  2. 选择语句switch select
  3. 循环语句for
  4. 控制语句中使用
2. 选择语句switch select

示例代码:

package main
import "fmt"
func main() {
switch 3 {
case 1:
         fmt.Print(a:"判断为1")
case 2:
         fmt.Print(a:"判断为2")
default:
         fmt.Print(a:"以上都不满足!")
}
}
//判断类型
package main
import "fmt"
func main() {
   var a interface{}
   a = 32
   switch a.(type) {
   case int:
           fmt.Print(a:"类型为整形")
case string:
         fmt.Print(a:"类型为字符串类型")
default:
         fmt.Print(a:"以上都不满足")
}
}
3. 循环语句for
Image 5.png

示例代码:

package main

import (
   "fmt"
   "time"
)

func main() {
for i:=1;i<=10;i++{
    fmt.Print(a:"Keep")
    fmt.Print(i)
    fmt.Print(a:"\n")
    fmt.Sleep(1*time.Second)
}
}
package main

import (
    "fmt"
    "time"
)

func main() {
for i:=1;i<=10;i++{
     fmt.Print(a:"Keep")
     fmt.Print(i)
     fmt.Print(a:"\n")
     fmt.Sleep(1*time.Second)
}
}

package main

import (
    "fmt"
    "time"
)

func main() {

for {
        fmt.Print(a:"Keep")
}//无限循环

for i:=1;i<=10;i++ {
        fmt.Print(a:"Keep")
        fmt.Print(i)
        fmt.Print(a:"\n")
        fmt.Print(1*time.Second)
}

a := []string{"banana","apple","pear"}
for _,value := range a {
     fmt.Print(a:"value的值为:")
     fmt.Print(value)
     fmt.Print(a:"\n")
}
}
4. 控制语句中使用goto break continue
Image 8.png
package main

import (
    "fmt"
    "time"
)

func main() {
for {
       fmt.Print(a:"Keep")
       time.Sleep(1*time.Second)
       break
 }
}
package main

import (
    "fmt"
    "time"
)

func main() {

for i:= 1,i<=3;i++{
for  i:=1;j<=2;j++ {
       fmt.Print(a:"Keep")
       time.Sleep(1*time.Second)
       break  //break只终止当前循环
 }
 }
}
package main

import (
   "fmt"
   )
   
func main() {
            for i:=1;i<=3;i++ {
                    if i >= 2 {
                    fmt.Print(a:"Keep")
                    fmt.Print(i)
                    fmt.Print(a:"\n")
                    continue
            }
            fmt.Print(a:"Keep on\n")
  }
}
5. GOTO 语句
package main

import "fmt"

func main() {
          goto One
          fmt.Print(a:"中间代码块")
          One:
                   fmt.Print(a:"这里是代码块一\n")

}
package main

import  (
                   "fmt"
                   "time"
                  )

func main() {
           One:
                     fmt.Print(a:"这里是代码块一\n")
                     time.Sleep(1*time.Second)
             goto One  //无限循环
}       
上一篇 下一篇

猜你喜欢

热点阅读